2012-07-20 66 views
4

嗨。我在閱讀以下問題後問這個問題:Question_1Question_2。 Question_1沒有任何適當的答案,Question_2有另一種解決方案,但不是完美的解決方案。Django內聯 - 允許添加禁用編輯

在這裏,我有兩個模型和管理員爲他們。

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

在這裏我想要實現的是:

當添加任務評論

  • 隱藏字段 「時間」,並在後臺更新。
  • 能夠輸入「註釋」並保存。

當保存評論

  • 後打開兩個「時間」和「備註」欄應爲已添加註釋可見和只讀。
  • 能夠添加新評論,如上所述。

方案2

  • 同前面的方案。
  • 唯一的補充是,對於爲其他用戶添加和只讀的用戶,該評論應該是可編輯的。 (我可以更新並獲取添加評論的用戶)。

這些是我想達到的目的。我曾嘗試在管理員中使用add_viewchange_view。但他們並不是爲內聯工作的。請提供解決方案來實現這些目標。提前致謝。

回答

0

你必須使用它使用下面的類

  • InlineModelAdmin
  • 的定製版本的定製版本InlineAdmin BaseInlineFormSet

您可以在自定義版本添加自己add_view和change_view InlineModelAdmin至

  • 檢測記錄的擁有者d(允許編輯)
  • 顯示的時間字段

可以提升BaseInlineFormSet控制所有運行方面

相關問題