您好。在阅读以下问题后,我在问这个问题:Question_1和Question_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 在 TaskList 中用作内联。
情景1
我想要实现的目标是:
添加任务评论时
保存评论后打开
情景2
这些是我想要实现的目标。我尝试在admin中使用 add_view 和 change_view 。但他们不是为内联工作。请提供实现这些目标的解决方案。提前谢谢。
答案 0 :(得分:0)
您必须使用自定义版本InlineAdmin,该版本使用以下类的自定义版本
您可以在自定义版本的InlineModelAdmin上添加自己的add_view和change_view
您可以增强BaseInlineFormSet来控制所有运行时方面