Использование динамической строки для ключа модели в 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.