创建成员ID的下拉菜单 [英] Creating a drop-down menu of Member IDs
问题描述
class Member(models.Model):
member_id = models.SlugField(max_length = 10)
name = models.CharField(max_length = 200)
gender = models.CharField(max_length = 1,choices = GENDER_CHOICES)
mobile = models .SlugField(max_length = 20)
def __str __(self):
return self.name
我想创建一个存储成员编号的下拉菜单,供用户从 select_member.html
中选择。
现在,我在 forms.py 中有这个:(很确定它是错误的)
$ b $
memberid = forms.ModelChoiceField(queryset = Member.member_id.objects.all())
以下视图:
class selectView(generic.ListView):
template_name ='expcore / select_member.html'
model = Activity
def select_member(request):
form = SelectForm )
如果request.method =='POST':
form = SelectForm(request.POST)
如果form.is_valid():
返回HttpResponseRedirect('/ questions /' )
else:
form = SelectForm()
return render(request,'select_member.html',{'form':form})
url:
url(r'^活动/(?P< activityname> [^ /] +)/ member / $',views.SelectView.as_view(),name ='select_member'),
我的select_member.html中没有任何内容,因为我不知道该怎么做。
有人可以通过表单,查看和HTML来帮助我吗?我想能够调用所有的成员ID,但是Member.member_id.objects.all()不起作用。
另外,如果有人能告诉我如何正确调用所有存储的成员ID,而不是不正确的Member.member_id.objects.all(),那将是很棒的。
Member.objects.values('member_id')给出了具有值结构的字典列表作为{'member_id':value}。
如果你只想要ids,你可以使 Member.objects.values_list('member_id',flat = True )
无论如何,您尝试使用ModelChoiceField,它期望使用Model实例的查询,并尝试传递给它
ModelChoiceField(queryset = Member.objects.all(),to_field_name ='member_id' )
通常, ModelChoiceFields
将id作为选项,但可以用 to_field_name
覆盖它:
https://github.com/django/django/blob/master/django/forms/models.py# L1129-L1144
I have a model Member that includes a specification called member_id.
class Member(models.Model):
member_id = models.SlugField(max_length=10)
name = models.CharField(max_length=200)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
mobile = models.SlugField(max_length=20)
def __str__(self):
return self.name
I want to create a drop-down menu of stored member ID's for the user to choose from in select_member.html
.
Right now, I have this in forms.py: (pretty sure it's wrong)
class SelectForm(forms.Form):
memberid = forms.ModelChoiceField(queryset=Member.member_id.objects.all())
The following view:
class SelectView(generic.ListView):
template_name = 'expcore/select_member.html'
model = Activity
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})
The url:
url(r'^activity/(?P<activityname>[^/]+)/member/$', views.SelectView.as_view(), name='select_member'),
And nothing in my select_member.html because I'm not sure what to put.
Can someone help me out with the form, view, and HTML? I want to be able to call all the member IDs but Member.member_id.objects.all() doesn't work.
Also, it would be great if someone could tell me how to correctly call all the stored member IDs - instead of the incorrect Member.member_id.objects.all().
Member.objects.values('member_id') gives you list of dictionaries with values structured as {'member_id': value}.
If you just want the ids, you can make Member.objects.values_list('member_id', flat=True) which will just give you list of member ids.
Anyways you try to use ModelChoiceField which expects a queryset of Model instances and you try to pass to it a list of slugs.
What you want to do is
ModelChoiceField(queryset=Member.objects.all(), to_field_name='member_id')
Normally ModelChoiceFields
gets id as option, but you can override it with to_field_name
:
https://github.com/django/django/blob/master/django/forms/models.py#L1129-L1144
这篇关于创建成员ID的下拉菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!