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 все работает правильно.

enter image description here

Есть идеи, как это исправить?

Я использую последнюю версию Django: 3.2

Вернуться на верх