Добавление поля с автоматическим увеличением в 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'
)