lundi 10 août 2015

Django: I can't succeed displaying multiple checkboxes in my template

I read the following thread: Django Multiple Choice Field / Checkbox Select Multiple

But I somehow miss something important as I can't succeed in displaying the checkboxes in my template. However, the name of the field does appear in the template but that's all, after the field name, it's all white and blank.

Curiously, in the thread I read, the author didn't wrote a list of tuple. That's why I think the problem could lie in the models.py

Here is my models.py

from django.db import models
from user.models import User

class RegionChoices(models.Model):
    REGION_CHOICES = (
        ('London', 'Londres'),
        ('Paris', 'Paris'),
        ('Berlin', 'Berlin'),
    )
    region = models.CharField(max_length=30, choices=REGION_CHOICES)

    def __str__(self):
        return self.region    

class Offer(models.Model):
    publisher = models.ForeignKey(User)
    content = models.TextField()
    region_choices = models.ManyToManyField(RegionChoices)

    def __str__(self):
        return self.publisher.username

forms.py

from django import forms
from django.contrib import admin
from django.conf import settings

from offers.models import Offer, RegionChoices

class SendOfferForm(forms.ModelForm):
    region_choices = forms.ModelMultipleChoiceField(queryset=RegionChoices.objects.all(), widget=forms.CheckboxSelectMultiple)
    class Meta:
        model = Offer
        exclude = ['publisher']

offer.html

<form action="{% url "send_offer" %}" method='POST' class='sendofferform'>
    {{ form.errors }}
    {{ form.non_field_errors }}
    {% csrf_token %}
    {{ offerform.as_p }}
</form>

views.py

    if offerform.is_valid():        
        sent = True
        offer = offerform.save(commit=False)
        offer.publisher = User.objects.get(id=logged_user.id)
        offer.save()
        offerform.save_m2m()
    else:
        print(offerform.errors)




Aucun commentaire:

Enregistrer un commentaire