限制发送到django表单的queryset

时间:2011-02-12 18:19:57

标签: django django-forms

我试图以特定形式限制'人'字段的可选值。

我有一个TaskPerson模型,它有两个外键:一个用于'task',一个用于'person'。

在我的表格中,人员字段应该允许用户选择一个或多个人,但只允许那些匹配某个任务的人。

我试过这个:

persons = [tp.person for tp in TaskPerson.objects.filter(task=thistask)]    
form.fields["persons"].queryset = persons

这个列表理解给了我正确的人物对象,但是我的表格根本没有显示,大概是因为它只给了我一个标准的python列表。

我查看了文档,但我不太清楚如何进步。有人可以建议我如何正确显示我的表格吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以按照与QuerySet相反的关系轻松获取PersonTaskPerson个对象 http://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

form.fields['field'].queryset = Person.objects.filter(taskperson__task=thistask)