J'ai un autre problème concernant mon modèle Image mais qui n'est pas de la même nature.
Je vous redonne le modèle concerné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class Image(models.Model):
    site = models.ForeignKey(Site)
    typeimage = models.ForeignKey(Typeimage, verbose_name='Type d\'image')
    nom = models.CharField('Nom de l\'image', max_length=200)
    localisation = models.ImageField('Image', upload_to = 'images/')
    def __unicode__(self):
        return self.nom
Je suis dans le cadre d'une modification d'un site en utilisant une vue générique (je n'ai pas spécifié le modele Site car ce n'est pas nécessaire).
Je ne vais pas rentrer trop dans les détails c'est inutile.
Donc l'URL que j'utilise est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
url(r'^site/(?P<siteid>\d+)/image/ajouter/$', add_image,)
Je n'utilise pas de vue générique car je veux faire un exclude du champs site de mon modèle Image.
Dans le cas contraire si j'utilise une vue générique, il me crée une liste déroulante de tous les sites existants hors je ne veux pas de cette liste.
Si on revient sur mon URL, j'utilise une variable siteid qui me permettra de remplacer cette fameuse liste déroulante.
En clair, je veux intégrer la valeur de siteid dans mon champs site de mon modèle Image.
Je crée donc cette fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
def add_image(request, siteid):
    if request.method == 'POST':
        form = ImageForm(request.POST)
        if form.is_valid():
            site = form.cleaned_data['siteid']
            typeimage = form.cleaned_data['typeimage']
            nom = form.cleaned_data['nom']
            localisation = form.cleaned_data['localisation']
            form.save()
        return HttpResponseRedirect('/tourisme/')
    else:
        form = ImageForm()
        return render_to_response("tourisme/site/add_image.html", 
                                     {'form': form, 'siteid' : siteid})
Dans ma template add_image.html je spécifie un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<input type="hidden" name = "siteid" value="{{ siteid }}">
Avec ceci, je passe ma variable siteid en caché et je la récupère avec la méthode POST.
Cependant après la saisie du formulaire, il me retourne un Key error sur siteid.
J'ai vérifié, ma variable siteid passe bien donc cela vient probablement de ma fonction add_image.

Donc qu'est ce qui ne va pas ?