Saturday, October 25, 2014

Re: Decimal value allowed for auto primary key

Whoops... just to clarify...

FruitType.objects.get(id=2.9) # Gets me the apple

I meant to comment that this gets me the orange.


On Saturday, October 25, 2014 8:37:55 PM UTC-4, Kafex wrote:
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/07857da5-7abf-478c-8f17-be1924e63541%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment