尝试使用模型和字段为参数的方法对Django模型字段进行Nullify

时间:2010-04-19 15:33:59

标签: django model null field

我正在尝试编写一个类似下面的方法,其中字段列表(所有字段的子集)作为参数传入,并且其列值设置为null。我很高兴能得到一个方法,只有字段作为参数如下,但将模型作为参数会更好。

来自my_project.my_app.models导入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 :(得分:0)

它位于the tutorial

MyModel.objects.all().update(**dict.fromkeys(null_fields))