如何在查询集内使用modelchoicefield的模型字段?

时间:2012-06-08 15:20:29

标签: django django-forms django-queryset

我希望能够在桌旁举办派对。首先我需要显示表单,因此我使用一个名为open_tables的额外字段创建模型表单。这必须是每个标记为AVAILABLE且具有容量的表。问题是我不知道如何从查询集中引用number_in_party字段。我绑了self.base_fields,但是自己没有用。我已经尝试过SeatPartyForm.model.number_in_party,但这不起作用。这发生在get上,并且此时填充了number_in_party。有没有办法做这个查询?

class SeatPartyForm( ModelForm):

open_tables = forms.ModelChoiceField(queryset=Table.objects.filter(status__exact=Table.AVAILABLE).exclude(max_capacity__lt =  model.base_fields['number_in_party']))
class Meta:
    model = Party
    fields = ('name', 'number_in_party')`

1 个答案:

答案 0 :(得分:0)

在用户填写之前,您不知道实际的number_in_party。服务器端Django表单不能自动为您执行限制。

因此,您需要在open_tables可用后通过javascript更改number_in_party;或者将表单拆分为两部分,在第一部分用户填写number_in_party,在第二部分,在服务器端,您可以根据open_tables的就绪值过滤number_in_party。 / p>