1

Movie というモデルがあり、Person というモデルに対して director という ManyToManyField があり、次のように ModelChoiceField を使用してフォームを作成しようとしています。

class MovieSearchForm(forms.Form):
    producer = forms.ModelChoiceField(label='Produced by',
                                      queryset=movies.models.Person.producer_set,
                                      required=False)

しかし、これはコンパイルに失敗しているようです (フォームを使用するビューに対して ViewDoesNotExist 例外が発生しますが、クエリセットをすべての人物オブジェクトに置き換えるだけで消えます)、「.producer_set」の評価が「早すぎる」。どうすればこの仕事を手に入れることができますか?

movie/person クラスの関連部分は次のとおりです。

class Person(models.Model):
    name = models.CharField(max_length=100)

class Movie(models.Model):
    ...
    producer = models.ForeignKey(Person, related_name="producers")
    director = models.ForeignKey(Person, related_name="directors")

私がやろうとしているのは、ある映画のプロデューサー分野で使用される人物を獲得することです。

4

1 に答える 1

1

より詳細な説明を求めるコメントを書きましたが、正しい軌道に乗るためのいくつかの指針を以下に示します。

.all()1)ステートメントの最後に追加する必要があります。

objects2) Model と field の間のステートメントに use またはその他のマネージャーを追加する必要があります。

3) 人物の Producer_set をクエリしています。論理的には、次のようなプロデューサーの Movie モデルを照会する必要があると想定します (モデルとユースケースによって異なります): queryset=movies.models.Movie.objects.producers.all()

于 2012-07-11T08:08:11.137 に答える