Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django下拉选择_Django_Selection_Dropdown_Choice - Fatal编程技术网

Django下拉选择

Django下拉选择,django,selection,dropdown,choice,Django,Selection,Dropdown,Choice,我想在template1中创建带有选项的“下拉”菜单。下拉列表应列出房间实例“创建日期”属性范围内的唯一日期 选择并提交选项后,应将其传递到模板2。需要将其传递给template2,以便呈现template2的视图可以按所选选项过滤房间实例,并在template2中显示过滤后的实例 有人能帮我列出完成上面写的工作所需的步骤吗?我会阅读这些必要的步骤,以便完成这项任务 下面是我的班级 class Room(models.Model): flat = models.ForeignKey(Fl

我想在
template1
中创建带有选项的“下拉”菜单。下拉列表应列出
房间
实例“创建日期”属性范围内的唯一日期

选择并提交选项后,应将其传递到
模板2
。需要将其传递给template2,以便呈现template2的视图可以按所选选项过滤房间实例,并在template2中显示过滤后的实例

有人能帮我列出完成上面写的工作所需的步骤吗?我会阅读这些必要的步骤,以便完成这项任务

下面是我的班级

class Room(models.Model):
    flat = models.ForeignKey(Flat)
    room_name = models.CharField(max_length= 10)
    room_value = models.PositiveSmallIntegerField(default=0)
    created_date = models.DateField(auto_now_add= True)
到目前为止,我已经尝试创建这样的下拉菜单,并且可以做到这一点,但我不知道如何将所选选项传递给template2,以便所选选项可以用作呈现template2的视图,以过滤Room类的实例

编辑

我已经创建了视图、表单和模板,但还没有传递更新日期

视图.py

def room_choice(request):
    form = RoomChoiceForm()
    if request.method == 'POST':
        form = RoomChoiceForm(request.POST)
        if form.is_valid():
            room_choice = form.save(commit=False)
            print room_choice
            return redirect('/blocks/all_rooms',request)

    return render(request, 'prostats/choicesform.html',{'form':form})
class RoomChoiceForm(forms.ModelForm):
    class Meta:
        model = RoomLog
        fields = ('room',)
forms.py

def room_choice(request):
    form = RoomChoiceForm()
    if request.method == 'POST':
        form = RoomChoiceForm(request.POST)
        if form.is_valid():
            room_choice = form.save(commit=False)
            print room_choice
            return redirect('/blocks/all_rooms',request)

    return render(request, 'prostats/choicesform.html',{'form':form})
class RoomChoiceForm(forms.ModelForm):
    class Meta:
        model = RoomLog
        fields = ('room',)
choicesforms.html

<form method="post" class="post-form">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="save btn btn-default">Submit</button>
</form>
url(r'^choices/$', views.room_choice, name='choices'),
url(r'^all_rooms/$', views.AllRoomsView.as_view(), name='roomsdetails'),

如果我理解正确:

  • 第一步是一个表单,用户从列表中选择一些选项。结果如下:
    choices=A、B、C
  • 从步骤1(A、B、C)中选择,您希望基于该选择显示某些内容
  • 对于步骤1,只需使用带有方法GET的常规HTML表单:

    <form method="GET" action="{% url 'name-of-url-of-step2' %}">
        <select multiple>
            <option name="choices" value="A"...>
            <option name="choices" value="B"...>
            <option name="choices" value="C"...>
            <option name="choices" value="D"...>
        </select>
    </form>
    
    
    
    提交此表单将调用表单
    操作中指定的url,并使用表单字段生成的查询字符串:
    http://...//?choices=A&choices=B
    (取决于选择)

    请注意,如果
    操作
    url中存在查询字符串,则通常会丢弃查询字符串,并将其替换为表单数据


    实现步骤2的Django视图现在可以读取查询参数:
    self.request.GET.getlist('choices')
    将返回
    ['A','B']

    我能理解为什么我得到了一个没有任何评论的“-1”,这样我就可以从中学习并改进我的问题,以备将来使用吗?我不确定dv是否在编辑之前,但任何时候你要求一个步骤列表基本上都是免费劳动的要求,因为它没有显示你的任何努力。话虽如此,我仍然觉得你的问题不清楚,你到底在努力解决哪一部分,你可以使用
    外键
    。。。。。输出是一个列表,在
    HTML
    中,您可以使用引导元素创建一个我不理解的下拉部分。我知道我可以用bootstrap创建下拉列表,但如果不选择数据,它不会给我太多。我应该使用fk做什么?