我正在尝试编写一个类似下面的方法,其中字段列表(所有字段的子集)作为参数传入,并且其列值设置为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)
等。这很可怕,但很有效。