1

我有一个名为 Movie 的模型,它有一个名为 Director 的 ManyToManyField 到一个名为 Person 的模型,我正在尝试使用 ModelChoiceField 创建一个表单,如下所示:

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

但这似乎无法编译(我得到了使用表单的视图的 ViewDoesNotExist 异常,但如果我只是用所有人员对象替换查询集,它就会消失),我猜是因为'.producer_set'评估得太早了。我怎样才能得到这份工作?

以下是电影/人物类的相关部分:

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

我写了一条评论,要求提供更详细的描述,但这里有一些提示可以让你走上正轨:

1)您应该.all()在语句的末尾添加。

2)您应该objects在模型和字段之间的语句中添加使用或其他一些管理器。

3)您正在查询一个人的 producer_set。从逻辑上讲,我假设您应该为这样的制片人查询电影模型(取决于您的模型和用例)queryset=movies.models.Movie.objects.producers.all()

于 2012-07-11T08:08:11.137 回答