Saturday, October 25, 2014

Decimal value allowed for auto primary key

If I have the following model...
class FruitType(models.Model):
  name
= models.CharField(max_length=255)

And I insert some records...
FruitType.objects.create(name="Apple")
FruitType.objects.create(name="Orange")

Why is this valid?
FruitType.objects.get(id=1.2) # Gets me the apple
FruitType.objects.get(id=2.9) # Gets me the apple


Django seems to truncate the id to just the integer part.
This also applies to form validation:
class FruitForm(forms.Form):
  type
= forms.ModelChoiceField(queryset=FruitType.objects.all())

form = FruitForm(data={'type': 1.5})
form
.is_valid() # returns True

Is there any way to prevent this? I.e., I want my form to treat 1.5 as invalid input and raise a ValidationError.

Thank you.


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/9f495b17-6f48-485b-9a6a-75f9e83f59b7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment