Добавление поля с автоматическим увеличением в JSONfield в django

Я смог вставить данные в мое поле, которое является JSONField через

  modelName.family_member.append({"name":'Brian King',
                    "relationship":'Father',
                    "occupation":'Engineer'})

Но я хочу добавить поле id, которое будет автоматически увеличиваться, как это происходит в mysql, поэтому вызов данных будет выглядеть как

{'id':1,
"name":'Brian King',
"relationship":'Father',
"occupation":'Engineer'},
{'id':2,
"name":'Demi King',
"relationship":'Mother',
"occupation":'Teacher'},

Я использую Django и mysql в качестве базы данных. Декларация моей модели выглядит следующим образом.

family_member = models.JSONField(default=jsonfield_default_value)

Пожалуйста, как я могу это сделать

Пожалуйста, не используйте JSONField. Реляционные базы данных все еще не могут очень эффективно работать с данными JSON. Это, например, не позволит эффективно обновлять данные: каждый раз вы будете отправлять весь JSON-блок обратно в базу данных. По мере увеличения объема JSON, увеличивается и объем работы базы данных по обновлению строки. Фильтрация, обновление, удаление и т.д. - все это довольно проблематично. Хотя было приложено много усилий, чтобы сделать работу с JSON более удобной, это все еще довольно "ортогонально" тому, что должна делать реляционная база данных.

Обычно создается дополнительная модель, поэтому:

class FamilyMember(models.Model):
    person = models.ForeignKey(
        Person,
        related_name=models.CASCADE
    )
    name = models.CharField(max_length=128)
    relationship = models.CharField(max_length=128)
    occupation = models.CharField(max_length=128)

при Person здесь модель, в которой вы определили отношение изначально.

Затем вы можете добавить данные, например, с помощью:

FamilyMember.objects.create(
    person=my_person,
    name='Brian King',
    relationship='Father',
    occupation='Engineer'
)
Вернуться на верх