我有一个名为Movie的模型,它有一个名为Person的ManyToManyField名为director,我正在尝试使用ModelChoiceField创建一个表单,如下所示:
class MovieSearchForm(forms.Form):
producer = forms.ModelChoiceField(label='Produced by',
queryset=movies.models.Person.producer_set,
required=False)
但这似乎无法编译(我正在为使用该表单的视图获取ViewDoesNotExist异常,但如果我只是用所有person对象替换查询集就会消失),我猜是因为' .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")
我想要做的就是获得一些在某些电影的制作人领域中使用过的人。
答案 0 :(得分:1)
我写了一篇评论,要求提供更详细的描述,但这里有一些指示可以让你走上正确的轨道:
1)您应该在声明的末尾添加.all()
。
2)您应该在模型和字段之间的语句中添加use objects
或其他一些管理器。
3)您正在查询某人的producer_set。从逻辑上讲,我会假设您应该为这样的生产者查询电影模型(取决于您的模型和用例):queryset=movies.models.Movie.objects.producers.all()
。