0

I want to use get_or_create() to search for an object. If it doesn't exist, it gets created. If it does exist, I want to update its metadata which is stored as a JSONFeild.

obj, created = Customer.objects.get_or_create(
    first_name="John",
    last_name="Doe",
    defaults={
        'metadata':{
            "customer_created": "2022_09_26",
            "adress_list": ["123 Street"],
    },
)

Which is correct?

if not created:
    obj.metadata["address_list"].append("123 Street")

or

if not created:
    addresses = obj.medata["address_list"]
    addresses.append("123 Street")
    obj.metadata["address_list"] = addresses
    obj.save()

Is there a better way to do this? I am not allowed to change the Customer class but I can change how I structure the metadata dict.

AlZ
  • 1
  • 2

0 Answers0