【发布时间】:2017-08-09 14:09:29
【问题描述】:
这是我的模型
class Note():
note = models.TextField(null=False, blank=False, editable=True)
user = models.ForeignKey(to=User, null=True, blank=True)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey("content_type", "object_id")
下面是我创建此模型以合并到任何管理员中的内联
class NoteInline(GenericTabularInline):
model = Note
extra = 0
我需要的是,我想查看所有当前的笔记,但不希望登录的用户编辑它们。目前用户可以编辑旧的和添加新的。所以这就是我所做的,
class NoteInline(GenericTabularInline):
model = Note
extra = 0
def get_readonly_fields(self, request, obj=None):
if obj and 'change' in request.resolver_match.url_name:
return ['note', 'user', ]
else:
return []
但是现在如果用户添加新笔记,他会看到一个禁用(不可编辑)的笔记文本。但是用户可以看到旧字段不可编辑。
如何实现这个功能?
【问题讨论】:
-
也许这样的事情可以工作,为“添加”和“更改”视图添加了不同的内联? djangosnippets.org/snippets/3084
-
这不会使内联部分只读和部分可编辑(内联注释的新增功能)。所以这就是我所做的,分成两个新的内联。这里解释得很好stackoverflow.com/a/28149575/1439913