使用Django表单以更加用户友好的方式呈现单选按钮的大型查询

问题描述

我正在尝试显示用户在申请时可以选择的时隙。有时会有很多插槽。

问题是我当前正在使用单选按钮和ModelChoiceField。

我在下面附上了我目前的照片。

This is what it does now.

我不确定是否需要使用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))之类的东西。

如果有帮助,可以参考模型的一些背景知识。有一个表演模型。然后有两个模型:Slot和Application都具有show fk。插槽也有一个应用程序外键。表单的目的(可行)是创建一个应用程序对象,并将该应用程序添加到可用的Slot对象中。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)