gpt4 book ai didi

Django 内联-允许添加禁用编辑

转载 作者:行者123 更新时间:2023-12-02 06:38:12 27 4
gpt4 key购买 nike

嗨。我在阅读以下问题后提出这个问题: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)

这里模型TaskCommentsTaskList中被用作内联。

场景 1

我想要实现的是:

添加任务评论时

  • 隐藏“时间”字段并在后端更新。
  • 能够输入“评论”并保存。

保存评论后打开

  • 对于已添加的评论,“时间”和“评论”字段均应可见且只读。
  • 能够按照上述方式添加新评论。

场景 2

  • 与之前的场景相同。
  • 唯一的补充是,评论对于添加它的用户来说应该是可编辑的,对于所有其他用户来说应该是只读的。 (我可以更新并获取添加评论的用户)。

这些都是我想要实现的目标。我尝试在管理中使用 add_viewchange_view 。但它们不适用于内联。请提供一个解决方案来实现这些目标。提前致谢。

最佳答案

您必须使用自定义版本 InlineAdmin,它使用以下类的自定义版本

  • 内联模型管理
  • BaseInlineFormSet

您可以在自定义版本的InlineModelAdmin上添加自己的add_view和change_view到

  • 检测记录的所有者(以允许编辑)
  • 显示时间字段

您可以增强 BaseInlineFormSet 来控制所有运行时方面

关于Django 内联-允许添加禁用编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574795/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com