2012-07-20 3 views
4

안녕하세요. 다음 질문을 읽은 후에이 질문을하고 있습니다 : Question_1Question_2. Question_1에는 적절한 답변이없고 Question_2에는 대체 솔루션이 있지만 완벽한 솔루션은 아닙니다.장고 인라인 - 편집 비활성화 추가 허용

여기에는 두 개의 모델과 관리자가 있습니다.

models.py

class TaskList(models.Model): 
    task_name  = models.CharField(max_length = 255, unique = True) 
    description = models.TextField() 
    assignee_role = models.ForeignKey(Group, related_name = "assignee_roles") 
    assignee_name = models.ForeignKey(User, related_name = "assignee_names") 

    def __unicode__(self): 
     return "%s" % (self.task_name) 

class TaskComments(models.Model): 
    tasklist = models.ForeignKey(TaskList) 
    time  = models.DateTimeField(null = True, blank = True) 
    comment = models.TextField() 

    def __unicode__(self): 
     return "" 

    def save(self, *args, **kwargs): 
     self.time = datetime.datetime.now() 
     super(TaskComments, self).save(*args, **kwargs) 

admin.py 여기

class TaskCommentsInlineAdmin(admin.TabularInline): 
    model   = TaskComments 
    can_delete  = False 

class TaskListAdmin(admin.ModelAdmin): 
    inlines  = [TaskCommentsInlineAdmin, ] 

    def add_view(self, request, form_url = '', extra_context = None): 
     self.readonly_fields =() 
     return super(TaskListAdmin, self).add_view(request, form_url, extra_context) 

    def change_view(self, request, form_url = '', extra_context = None): 
     self.readonly_fields = ('task_name', 'description',) 
     return super(TaskListAdmin, self).change_view(request, form_url, extra_context) 

모델 TaskComments는 태스크 목록 인라인으로 사용되고있다.

시나리오 다음은 1

내가 무엇을 달성하고자하는 것은 :

작업을 추가하면

  • 필드 "시간"을 숨기기 및 백엔드에서 업데이트 코멘트.
  • "의견"을 입력하고 저장할 수 있습니다.

절약 의견

  • 후 열 모두 "시간"과 "설명"필드가 이미 추가 코멘트를 볼 수 및 읽기 전용이어야한다.
  • 위에서 설명한대로 새 설명을 추가 할 수 있습니다.

이전 시나리오 등이

  • 같은 시나리오.
  • 덧붙여 덧붙여 코멘트는 그것을 추가 한 사용자에 대해서 편집 가능해야하고, 다른 모든 사용자들에게는 읽기 전용이어야합니다. (나는 코멘트를 추가하는 사용자를 업데이트하고 얻을 수있다).

이것들은 내가 달성하고 싶은 것들입니다. 나는 add_viewchange_view (admin)을 사용해 보았습니다. 그러나 그들은 인라인으로 일하고 있지 않습니다. 이러한 목표를 달성 할 수있는 해결책을 제시하십시오. 미리 감사드립니다.

답변

0

당신은 당신의 사용자 정의 버전에 자신의 add_view 및 change_view을 추가 할 수 있습니다

아래 클래스

  • InlineModelAdmin
  • 의 사용자 정의 버전을 사용하는 사용자 정의 버전 InlineAdmin BaseInlineFormSet을 사용해야합니다 InlineModelAdmin to

    • D 당신은 BaseInlineFormSet을 향상시킬 수

    시간 필드는 모든 런타임 측면을 제어 할 수

  • 디스플레이 (편집을 허용하는)