Как добавить список внутри 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

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