0

これらを django モデルと仮定します。

class Author():

    name = charfield()

class Book():

    title = charfield()
    author = foreignkey()

ModelForm:

class BookForm():

    # i override the author field
    author = models.CharField()

    class Meta:
        model = Book
        fields = ('title', 'author')

私はオートコンプリート プラグインを使用しています (Facebook 検索のようなので、choicefield を使用せずに作成者フィールドに入力できます)。問題は、作成author者のインスタンスではなく、文字列であるため、フィールドから値を割り当てることができないことです。だから私はそれが検証される前にそれを操作することを考えています. を変更してみましQueryDictたが、不変です。フォームを呼び出すとすぐにform = BookForm(request.POST)エラーが発生します: Cannot assign u"foo":"Book.author" must be an Author instance. ありがとうございました。

4

1 に答える 1

1

あなたはそれを「ジャンゴのやり方」でやっているわけではありません。author フィールド用に独自のウィジェットを作成する必要があります。

次のようにします。

class BookForm():

    class Meta:
        model = Book
        fields = ('title', 'author')
        widgets = {
        'author': YourFacebookLikeWidgetClass,
    }

これで、ウィジェットはすべてのクールなこと (ajax 呼び出し、結果のレンダリングなど) を担当しますが、最終的にはフォームの正しい値を返します。(著者ID)

django ウィジェットの詳細を読む

問題は、独自のウィジェットの作成に関する情報があまりないことですが、いつでもここで質問したり、いくつかの django ウィジェットのソース コードを確認したりできます。(自分で書くのはそれほど複雑ではありません:))

于 2012-12-22T11:26:36.747 に答える