我有两个名为“消息”和“票证”的模型。消息有一个外键到工单。我使用 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但这就是发生的事情: 管理页面的截图
从图片中可以看出,每条消息内联都已设为只读,我无法添加新消息......
谁能帮我解决这个问题?
慕后森
相关分类