У меня есть две модели: «Сообщение» и «Билет». Сообщение имеет иностранный ключ для билета. Я показал «Сообщения билета» в админке django, используя StackedInline. Но проблема в том, что я хочу, чтобы уже созданные сообщения были доступны только для чтения, а также возможность создавать новые сообщения.
Я также проверил кучу вопросов; как это или это . Но ничего из этого не помогло! Или, по крайней мере, я не мог получить ключ!
Это мой код:
models.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)
admin.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
, но вот что произошло:
скриншот страницы администратора
Как видно на картинке, каждое встроенное сообщение было сделано только для чтения, и я не могу добавить новое сообщение ...
Может кто-нибудь помочь мне с этим вопросом?