我正在尝试显示用户在申请时可以选择的时间段。有时会有相当多的插槽。
问题是我目前正在使用单选按钮和 ModelChoiceField。
我在下面附上了我目前拥有的图片。
我不确定是否需要使用 React 或其他前端框架。我想要的是以一种方式显示单选按钮,这不仅仅是一个巨大的列表,而是一个较短的列表配对成组。
我曾想过使用 CSS 来隐藏一些时间。也许每个小时都有一个复选框,可以在该小时内显示和隐藏单选按钮(大多数插槽是 5 分钟),但我在尝试使用 ModelChoiceField 过滤和呈现表单时遇到了困难。
我的 ModelForm 类的价值:
class ApplicationForm(forms.ModelForm):
slot_choice = forms.ModelChoiceField(queryset=None,
label="Please select a time slot. (You can change this at a later time if your schedule changes)",
empty_label="Please select a time slot",
widget=forms.RadioSelect(attrs={'class': 'custom-control-input'}))
class Meta:
model = Application
fields = ['resume', 'cover_letter']
def __init__(self, show, *args, **kwargs):
super(ApplicationForm, self).__init__(*args, **kwargs)
# only display slots for current show that are not filled.
self.fields['slot_choice'].queryset = Slot.objects.filter(show=show).filter(application__isnull=True).order_by('start')
我的观点实际上只是将 Show 对象作为参数传递给表单。类似的东西ApplicationForm(Show.objects.get(pk=show_id))
。
如果有帮助,请提供有关模型的一些背景知识。有一个显示模型。然后是 2 个模型:Slot 和 Application,它们都有一个 show fk。Slot 也有一个应用程序外键。表单的目标(可行)是创建一个应用程序对象,并将应用程序添加到可用的 Slot 对象中。