Django - ошибка при сохранении объекта в `TabularInline`, когда первичный ключ является строкой и доступен только для чтения
У меня есть следующие модели:
class Parent(models.Model):
name = models.CharField(max_length=255)
class Child(models.Model):
id = models.CharField(primary_key=True, max_length=255)
name = models.CharField(max_length=255)
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
Модель Child имеет первичный ключ (ID) типа string.
Теперь я пытаюсь отобразить детей в TabularInline inline внутри Parent формы администратора, и я хочу, чтобы поле ID было доступно только для чтения:
class ChildMemberLinkAdmin(admin.TabularInline):
model = Child
extra = 0
fields = ("id", "name")
readonly_fields = ("id",)
@admin.register(Parent)
class ParentAdmin(admin.ModelAdmin):
fields = ("name",)
inlines = (ChildMemberLinkAdmin,)
Я создал родителя и ребенка в Django Shell и проверил, что у каждого из них есть ID и имя. Они правильно отображаются в Django Admin. Однако, когда я нажимаю кнопку Save в форме Parent (даже ничего не меняя), я получаю ошибку "Please correct the errors below.". При отладке я заметил, что дочерний id почему-то отсутствует, что странно, потому что у моего Child экземпляра уже есть ID, который отображается как readonly в TabularInline в форме.
Когда я удаляю id из ChildMemberLinkAdmin.readonly_fields все работает правильно.
Есть идеи, как это исправить?
Я использую последнюю версию Django: 3.2
