Попытка обнулить поля модели Django с помощью метода, где модель и поля являются параметрами - PullRequest
0 голосов
/ 19 апреля 2010

Я пытаюсь написать метод, подобный приведенному ниже, в котором список полей (подмножество всех полей) передается в качестве параметра, и значения их столбцов установлены на ноль.Я был бы счастлив, что мог бы получить метод только с полями в качестве параметра, как показано ниже, но иметь модель в качестве параметра было бы еще лучше.

из my_project.my_app.models import MyModel

def nullify_columns (self, null_fields):
    field_names = MyModel._meta.get_all_field_names()
    for field in field_names:
        if field in null_fields:
            # The below line does not work because I'm not sure how to 
            # dynamically assign the field name.
            MyModel.objects.all().update( (MyModel.get_field(field).column) = None) 

Сейчас у меня есть что-то вроде

if 'column1' in list_of_fields:
    MyModel.objects.all().update(column1 = None) 
if 'column2' in list_of_fields:
    MyModel.objects.all().update(column2 = None)

и т. Д.что ужасно, но работает.

1 Ответ

0 голосов
/ 19 апреля 2010

Это в учебник :

MyModel.objects.all().update(**dict.fromkeys(null_fields))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...