Использование динамической строки для ключа модели в django

Например, у меня есть такая таблица,

class FormSelector(models.Model):
    prefs = models.JSONField(default=dict,null=True, blank=True)
    items = models.JSONField(default=dict,null=True, blank=True)

Затем в представлениях я хочу сделать вот так,

json = {"prefs":[1,2],"items":[2,3,4]}
mo = FormSelector.objects.last()
for key in json: // key is string "prefs","items"
    mo.{key} = di[key] // I want to do the equivalent to mo.prefs , mo.items 

Есть ли какой-нибудь хороший метод для этого?

Используйте setattr(…) [python-doc]:

for key, val in json.items():
    setattr(mo, key, val)

Здесь setattr(x, 'y', z) эквивалентен x.y = z.

json_data = {"prefs": [1, 2], "items": [2, 3, 4]}
mo = FormSelector.objects.last()

for key, value in json_data.items():
    setattr(mo, key, value)

mo.save()
This code dynamically sets the attributes of the mo object based on the keys in the json_data dictionary. The setattr() function is used to set the attribute dynamically based on the key-value pairs in the dictionary. Finally, don't forget to call save() on the mo object to persist the changes to the database.
Вернуться на верх