Doesn't the default need to be one of the choices?

> models.PositiveIntegerField(default=1, null=False, 
> choices=((1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5')))

Sent from my iPhone

On Nov 12, 2012, at 11:37 AM, Josue Balandrano <xird...@gmail.com> wrote:

> Hi, I am trying to create a very basic ratings and comments app. I have this 
> model:
> 
> class Ratings(models.Model):
>     user = models.ForeignKey(UserProfile)
>     product = models.ForeignKey(Product)
>     rate = models.PositiveIntegerField(default=0, null=False, 
> choices=((1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5')))
>     comment = models.TextField(default='', blank=True)
>     date_added = models.DateField(default=datetime.now)
>     objects = RatingsManager()
> 
>     def __unicode__(self):
>         return self.rating
> 
>     class Meta:           
>         unique_together = ("user", "restaurant")  
> 
> class RatingsManager(models.Manager):
>     def get_average(self, **kwargs):
>         prod = kwargs['prod']
>         return self.filter(product = prod).aggregate(Avg('rate'))
> 
> And I have this modelform Class:
> 
> class RatingsForm(forms.ModelForm):
>     comment = 
> forms.CharField(widget=forms.Textarea(attrs={'name':'comentario', 'label':'', 
> 'rows':'5', 'cols':'50'}))
>     class Meta:
>         model = Ratings
>         widgets = {
>             'user' : forms.HiddenInput(),
>             'product' : forms.HiddenInput(),
>             'rate' : forms.RadioSelect(),
>         }
>         exclude = ('date_added', )
> 
> First, this is how I initiate the form and pass it to the context variable. 
> This form will only ve bisivle in a detail view of the product.
> 
>     rating_form = RatingsForm(initial={'product':prod.id, 
> 'user':self.request.user.id})
>     context['rating_form'] = rating_form
> 
> And this is what I gets executed once the view recieves a post request. 
> 
>         product_id = request.POST.get('product')
>         user_id = request.user.id
>         try:
>             instance = Ratings.objects.get(user = int(user_id), product = 
> int(product_id)) #IF USER SUBMITED RATING FOR THIS PRODUCT UPDATE EXISTING 
> RECORD INSTEAD OF CREATING A NEW ONE
>         except Ratings.DoesNotExist:
>             instance = None
>         if instance is None:
>             formset = RatingsForm(request.POST)
>             formset.restaurant = int(restaurant_id)
>             formset.user = int(user_id) 
>             if formset.is_valid():
>                 formset.save()
> 
>         else:
>             formset = RatingsForm(request.POST, instance=instance)
>             if formset.is_valid():
>                 formset.save()
> 
>         context.update({ 'rating_form':formset,})
>         return self.render_to_response(context)
> 
> So when ever I submit the form I get this error:
> 
> Select a valid choice. That choice is not one of the available choices.
> But I can't figure out what does it means? Because the only choice field I 
> have is the "rate" field and it could never be anything else than an int 
> between 1 - 5.
> 
> Any ideas how to fix this?
> 
> Thank you.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/django-users/-/u6heU1dlyDsJ.
> 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