Typo
choices.append((item.name, item.name))
should be
choices.append((item.id, item.name))

From: django-users@googlegroups.com [mailto:django-users@googlegroups.com] On 
Behalf Of Mike Ramirez
Sent: 24 February 2011 14:10
To: django-users@googlegroups.com
Subject: Re: field choices() as queryset?


On Thursday, February 24, 2011 03:53:03 am galago wrote:

> I need to make a form, which have 1 select and 1 text input. Select must be

> taken from database.

> model looks like this:

> class Province(models.Model):

> name = models.CharField(max_length=30)

> slug = models.SlugField(max_length=30)

>

> def __unicode__(self):

> return self.name

>

> It's rows to this are added only by admin, but all users can see it in

> forms.

> I want to make a ModelForm from that. I made something like this:

> class ProvinceForm(ModelForm):

> class Meta:

> CHOICES = Province.objects.all()

>

> model = Province

> fields = ('name',)

> widgets = {

> 'name': Select(choices=CHOICES),

> }

>

> but it doesn't work. The select tag is not displayed in html. What did I

> wrong?

I haven't done this one in a while, but you need to make the CHOICES a tuple or 
a list[1], not a queryset (unless there has been changes in this specific area).

something like this:

def make_choices():

choices = []

for item in Province.objects.all()

choices.append((item.name, item.name))

return choices

# your form stuff

...

widgets = { 'name': Select(choices=make_choices()), }

The first value is the value stored, the second one is the human readable form 
in the tuple.

Mike

[1] http://docs.djangoproject.com/en/1.2/ref/models/fields/#field-choices

--

Banacek's Eighteenth Polish Proverb:

The hippo has no sting, but the wise man would rather be sat upon

by the bee.
--
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to