Запросы в Django orm с левой изменяемой частью не являются определенными
Я хочу сделать такой запрос:
Student.objects.filter(id= id).update(name=value)
А значение исходит от пользователя.
Но проблема в том, что мне нужно не только обновить имя, но и обновить некоторую другую информацию, например, адрес или номер телефона. Я не хочу создавать дублирующиеся коды например:
Student.objects.filter(id= id).update(address=value)
Student.objects.filter(id= id).update(phone_number=value)
Я хочу иметь только одну строку кода, например:
Student.objects.filter(id= id).update(XXX=XXX_value)
Так что мне интересно, могу ли я присвоить любую переменную левой изменяемой переменной внутри функции update или нет.
Извините, левый ключ не является определенным значением. Оно зависит от сообщения пользователя. В следующий раз это может быть адрес или просто имя. Это не фиксированное значение.
Спасибо.
Согласно обновлению документации
Вы можете обновлять несколько полей - нет ограничений по их количеству
Так что следующее должно получиться
Student.objects.filter(id=id).update(address=address_value, phone_number=phone_number_value)
Вы можете динамически определить поля, предоставив их в словаре и используя **
для распаковки словаря в аргументы для update()
.
fields_to_update = {
"address": address_value,
"phone_number": phonenumber_value,
}
Students.objects.filter(id=update_id).update(**fields_to_update)