【问题标题】:How do I use a model field inside a queryset for a modelchoicefield?如何在模型选择字段的查询集中使用模型字段?
【发布时间】:2012-06-12 16:15:11
【问题描述】:

我希望能够在餐桌上举办派对。首先我需要显示表单,所以我创建了一个模型表单,其中包含一个名为 open_tables 的额外字段。这必须是每个标记为 AVAILABLE 且具有容量的表。问题是我不知道如何从查询集中引用 number_in_party 字段。我已经绑定了 self.base_fields,但 self 不起作用。我试过 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')`

【问题讨论】:

    标签: django django-forms django-queryset


    【解决方案1】:

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

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

    【讨论】:

    • 这是在得到,它是导致问题的解释器。我还更新了问题,此时正在使用 number_in_party 已经设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2013-10-18
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    相关资源
    最近更新 更多