为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 StackedInline 类使现有模型对象只读但也能够创建新模型对象?

如何使用 StackedInline 类使现有模型对象只读但也能够创建新模型对象?

慕尼黑5688855 2022-01-18 17:33:04
我有两个名为“消息”和“票证”的模型。消息有一个外键到工单。我使用 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和访问特定模型的权限,但不要授予他们UpdateDelete访问权限。这应该使他们能够查看数据而无法更改或删除它。


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信