你好。我在阅读以下问题后提出这个问题:问题_1 https://stackoverflow.com/q/2951781/1095090 and 问题2 https://stackoverflow.com/q/9504371。 Question_1 没有任何合适的答案,Question_2 有替代解决方案,但不是完美的解决方案。
这里我有两个模型和他们的管理员。
模型.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)
这里是模型任务评论被用作内联TaskList.
场景1
我想要实现的是:
添加任务注释时
- 隐藏“时间”字段并在后端更新它。
- 能够输入“评论”并保存。
保存评论后打开时
- 对于已添加的评论,“时间”和“评论”字段都应该可见且只读。
- 能够如上所述添加新评论。
场景2
- 与之前的场景相同。
- 唯一的补充是,评论对于添加它的用户来说应该是可编辑的,对于所有其他用户来说应该是只读的。 (我可以更新并获取添加评论的用户)。
这些是我想要实现的目标。我尝试过使用add_view and 更改视图在管理中。但它们不适用于内联。请提供一个解决方案来实现这些目标。提前致谢。