【发布时间】:2016-03-04 20:47:20
【问题描述】:
我正在尝试创建成员 ID 的下拉列表供用户选择。我在 forms.py 中创建了一个名为 SelectForm 的表单:
from .models import Member
from django import forms
class MemberForm(forms.ModelForm):
class Meta:
model = Member
fields = '__all__'
class SelectForm(forms.Form):
memberid = forms.ModelChoiceField(queryset=Member.objects.values_list('member_id', flat=True))
与视图:
class SelectView(generic.ListView):
template_name = 'expcore/select_member.html'
model = Member
def select_member(request):
form = SelectForm()
if request.method == 'POST':
form = SelectForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/questions/')
else:
form = SelectForm()
return render(request, 'select_member.html', {'form': form})
现在,HTML 给我的所有内容都是“成员选择:请 blablablabla”,其中包含与现有成员 ID 数量相对应的项目符号列表。但是,实际的会员 ID 并没有显示出来;此外,整个事情现在都是列表格式,而不是我想要的下拉菜单。
select_member.html:
{% load staticfiles %}
<title>Member Selection</title>
<h1>Member Selection</h1>
Please select your Member ID from the drop-down menu.
<ul>
{% for member_id in object_list %}
<li><a href='/member/{{ member.name }}'></a></li>
{% empty %}
<li>None available.</li>
{% endfor %}
</ul>
我相信我创建的表单应该为我生成一个下拉菜单,但我认为我的视图/HTML 不正确。你们能帮帮我吗?
另外 - 成员 ID 在我的 models.py:
中的成员类下class Member(models.Model):
member_id = models.SlugField(max_length=10)
def __str__(self):
return self.name
谢谢。
【问题讨论】:
-
您没有在模板中使用对象表单。而且,
object_list变量是什么???在你看来,我没有看到。要显示对象表单,您可以在模板中使用:{{ form }}。 -
@AngelCruijff 我应该把 {{ form }} 放在哪里?我需要删除任何东西吗?
标签: python html django django-forms django-templates