在ModelChoiceField中使用callable/dynamic for queryset?

2024-09-27 21:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表单用于制作表单集,如下所示:

class PreferenceForm(forms.Form):
    preference = forms.ModelChoiceField(SchoolClass.objects.currently_enrolling())

当前的方法\u enrolling()queryset返回ModelChoiceField从中选择的queryset:

^{pr2}$

在这个查询集返回的数据(即当前正在注册的类)发生更改之前,此操作一直有效-表单不会显示现在正在注册的新类。重新启动django解决了这个问题,但这不是一个最佳解决方案。我想这意味着这段代码在启动时运行一次,而不是随后运行。有没有一种方法可以让它适用于不断变化的查询集?在

编辑: 这是本学期(示范班)内的现行注册代码:

@classmethod
def current_enrolment(cls):
    semesters = cls.objects.filter(enrolments_open=True)
    if len(semesters) == 0:
        return cls.objects.latest('pk')  # no match, so we'll use the most recently created semester
    elif len(semesters) == 1:
        return semesters[0]
    else:
        return semesters[0] 

Tags: 方法代码form表单lenreturnobjectsforms

热门问题