You could tell Django to designate the 'code' field as the primary
key, which will automatically make it unique.  Any forms will then be
forced to identify by the code, rather than some numeric id:

    class Country(models.Model):
        code = models.CharField(max_length=5, primary_key=True)
        name = models.CharField(max_length=100, unique=True)

Hope that helps!  There is another way to do it as well, but I opted
to keep it simple.

Tim

On Nov 26, 10:28 am, jul <juj...@gmail.com> wrote:
> hi,
>
> I'm generating, using ModelForm, a form from a Restaurant model, which
> has a Country field.
> Country has a 'code' and a 'name' fields.
> When the form is created in my template, the values of the select
> options are the Country ids. How can I replace them by the Country
> 'code' values. Is it possible to choose which field is used as the
> value by overriding the Country field in the ModelForm?
>
> thanks
>
> I have that:
>
> <label for="id_country">Country:</label> <select name="country"
> id="id_country">
> <option value="" selected="selected">---------</option>
> <option value="1">Andorra</option>
> <option value="2">United Arab Emirates</option>
> <option value="3">Afghanistan</option>
>
> and I want that:
>
> <label for="id_country">Country:</label> <select name="country"
> id="id_country">
> <option value="" selected="selected">---------</option>
> <option value="AD">Andorra</option>
> <option value="AE">United Arab Emirates</option>
> <option value="AF">Afghanistan</option>
>
> Models and ModelForm:
>
> class Country(models.Model):
>     code = models.CharField(max_length=5, unique=True)
>     name = models.CharField(max_length=100, unique=True)
>
>     class Meta:
>         verbose_name_plural = 'Countries'
>
>     def __unicode__(self):
>         return self.name
>
> class Restaurant(models.Model):
>
>     name = models.CharField(max_length=100)
>     country=models.ForeignKey(Country)
>     city=models.ForeignKey(City)
>     street=models.CharField(max_length=100)
>     street_number=models.PositiveSmallIntegerField()
>     phone_number=models.CharField(max_length=16, blank=True,
> null=True)
>     price_range=models.PositiveSmallIntegerField(blank=True,
> null=True)
>     category=models.ManyToManyField(Category, blank=True,
> null=True)
>     tag=models.ManyToManyField(Tag, blank=True, null=True)
>     slug = models.SlugField(unique=True)
>
>     def get_absolute_url(self):
>         return "/restaurant/%s/" % self.slug
>
>     def __unicode__(self):
>         return self.name
>
>     def save(self):
>         self.slug = slugify(self.name)
>         super(Restaurant, self).save()
>
> class AddRestaurantForm(ModelForm):
>
>     class Meta:
>         model = Restaurant
>         exclude = ('slug')

--

You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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