我想创建' dropdown' template1
中的菜单,带有选项。下拉列表应列出Room
个实例'created_date'
属性范围内的唯一日期。
选择并提交选项后,应将其传递给template2
。它需要传递给template2,因此呈现template2的视图可以通过选择的选项过滤Room实例并在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,因此选择的选项可用于呈现模板2以过滤Room类实例的视图。
修改
我创建了视图,表单和模板,但我还没有设法通过update_date。
views.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})
forms.py
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'),
答案 0 :(得分:0)
如果我理解正确:
choices=A,B,C
只需使用常规HTML表单和方法GET进行第1步:
<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>
提交此表单会调用action
表单中指定的网址,其中包含从表单字段生成的查询字符串:http://.../<url-to-step2>/?choices=A&choices=B
(取决于所选内容)
请注意,如果action
网址中存在查询字符串,则会丢弃查询字符串,这将是正常的,并且将替换为表单数据。
实现第2步的Django视图现在可以读取查询参数:self.request.GET.getlist('choices')
将返回['A','B']
。