Как добавить список внутри dict из JSONFeild в django
Я хочу использовать get_or_create() для поиска объекта. Если он не существует, он создается. Если он существует, я хочу обновить его метаданные, которые хранятся в виде JSONFeild.
Допустим, у нас есть класс и объект:
Class Customer(models.Model):
first_name = models.CharField(max_length=32, blank=True, db_index=True)
last_name = models.CharField(max_length=32, blank=True, db_index=True)
metadata = models.JSONField(default=dict, blank=True)
Customer.objects.create(
first_name="John",
last_name="Doe",
metadata ={
"customer_created":"2022_08_06",
"address_list":["123 Street"],
},
)
Теперь мы хотим добавить еще одного клиента, но если он уже существует, мы просто хотим добавить список в metadata["address_list"]
obj, created = Customer.objects.get_or_create(
first_name="John",
last_name="Doe",
defaults={
'metadata':{
"customer_created": "2022_09_26",
"adress_list": ["321 Avenue"],
}
)
Будет ли работать obj.medata["address_list"].append(["321 Avenue"]) или мне нужно скопировать список, добавить его, а затем обновить метаданные? Что правильнее?
if not created:
obj.metadata["address_list"].append(["321 Avenue"])
или
if not created:
addresses = obj.medata["address_list"]
addresses.append(["321 Avenue"])
obj.metadata["address_list"] = addresses
Я новичок в django; есть ли лучший способ сделать это? Мне не разрешено изменять класс Customer, но я могу изменить структуру метаданных dict