1

私はdjangoに非常に独特な問題を抱えています。

大きなデータを編集するためのWebサイトユーザーインターフェイスを提供しています。このデータの各行は、データベースの行を表します。または特定のタイプの1つのオブジェクト。

ユーザーがテーブルのセルをクリックすると、フォームが開き、このフィールド/列の値を編集できます。

基本的に、次のように機能します。1)ユーザーがクリックした場所に基づいて、オブジェクトIDと編集中のフィールドを含むクエリがサーバーに送信されます。2)この情報フォームに基づいてオンザフライで作成されます。

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

フィールドの名前ではなく変数があることに注意してください。

3)このフィールドは、独自のモデルフォーム検証に合格し、すべて問題ありません。保存メソッドでは、Model.save()で値を更新できます。

しかし、今問題に。空の値がこの形式でサーバーに送信される場合があります。u''のような空の値、またはu''のようなほぼ空の値。これをNoneで置き換えたいので、NULLがデータベースに保存されます。

私がそれをすることができる2つの場所があります。フィールド検証でcleaned_dataを変更するか、フォームのsaveメソッドで。

変数関数名の作成方法がわからないため、どちらのアプローチでも固有の問題が発生します。

def clean_%(field)s(): 

またはフォーム保存方法の場合

r.%(field)s = None

私が必要なものですが、それらの方法は機能しません。では、変数であるメソッド名を作成したり、オブジェクトの変数パラメーターを何かに設定したりするにはどうすればよいですか。それも可能ですか、それともそこでのアプローチを再考する必要がありますか?

アラン

4

1 に答える 1

2

後者の場合、setattr(r, field + 's', None).

于 2013-02-07T14:23:37.880 に答える