我有两个名为“消息”和“票证”的模型。消息有一个外键到工单。我使用 StackedInline 在 django admin 中显示了票证消息。但问题是我希望已经创建的消息是只读的,同时也能够创建新消息。我也检查了一堆问题;像这样或这样。但没有一个是有帮助的!或者至少,我无法得到线索!这是我的代码:模型.py:class Ticket(models.Model): title = models.CharField(max_length=128) #...class Message(models.Model): text = models.TextField() ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE) attachment = models.FileField(upload_to=some_url_pattern) sender = models.CharField(max_length=2, editable=False)管理员.py:class MessageInline(admin.StackedInline): model = Message extra = 1 def get_readonly_fields(self, request, obj=None): if obj: return ['text', 'attachment'] else: return []@admin.register(Ticket)class ResponderAdmin(admin.ModelAdmin): fields = ['title'] inlines = [MessageInline]可以看出,我试图通过覆盖来实现目标,get_readonly_fields但这就是发生的事情: 管理页面的截图从图片中可以看出,每条消息内联都已设为只读,我无法添加新消息......谁能帮我解决这个问题?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
我假设这是给管理员的。
删除用户的超级用户访问权限,但保留他们的员工访问权限。然后使用权限来授予他们Add
和访问特定模型的权限,但不要授予他们Update
或Delete
访问权限。这应该使他们能够查看数据而无法更改或删除它。
添加回答
举报
0/150
提交
取消