创建成员ID的下拉菜单 [英] Creating a drop-down menu of Member IDs

查看:143
本文介绍了创建成员ID的下拉菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个模型会员,包含一个名为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

我想创建一个存储成员编号的下拉菜单,供用户从 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆