在表单中具有可变列/字段名称的唯一python / django问题

时间:2013-02-07 14:14:46

标签: python django django-forms

我对django有很独特的问题。

我提供网站用户界面来编辑大数据。此数据上的每一行代表数据库中的一行。或某种类型的一个对象。

用户点击表格中的单元格,然后打开表单,他们可以在此处编辑此字段/列值。

本质上它的工作原理如下: 1)根据用户点击的位置,将查询发送到服务器包含对象id和他正在编辑的字段。 2)基于此信息表格即时创建:

class FieldEditorForm(forms.ModelForm):
    class Meta:
        model = MyObject
        fields = ['id', field ]

注意字段中有变量而不是字段的名称。

3)这个字段通过自己的模型验证,一切都很好。在save方法中,Model.save()足以更新值。

但现在问题。有时以这种形式将空值发送到服务器。像你这样的Empy价值或像你一样几乎像emtpty一样。我想用None来重复这个,所以NULL将被保存到数据库。

我有两个地方可以做到这一点。在字段验证中修改cleaning_data或在表单保存方法中。

这两种方法都引发了独特的问题,因为我不知道如何创建变量函数名称。

def clean_%(field)s(): 

或表格保存方法

r.%(field)s = None

是我需要的,但这些方法不起作用。那么我怎么能创建变量的方法名称或设置对象变量参数的东西。它甚至可能还是我必须重新考虑我的做法?

艾伦

1 个答案:

答案 0 :(得分:2)

在后一种情况下,setattr(r, field + 's', None)