我正在尝试创建一个供用户选择的成员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
谢谢。
答案 0 :(得分:0)
请查看此第三方应用程序:django-crispy-forms。它将使您的生活更轻松。
答案 1 :(得分:0)
在你的模板中:
{% load staticfiles %}
<title>Member Selection</title>
<h1>Member Selection</h1>
Please select your Member ID from the drop-down menu.
<!-- Form -->
<form method="POST" action="your_view">
{{ form }}
</form
<ul>
{% for member_id in object_list %}
<li><a href='/member/{{ member.name }}'></a></li>
{% empty %}
<li>None available.</li>
{% endfor %}
</ul>