Bonjour à tous.
Veuillez m’excuser si je pose une question complètement idiote ou irrationnelle, mais je débute en programmation et Python + Django sont mes premiers outils...
Je souhaite donc développer un petit site internet pour m’entraîner.

J'ai un système de blog sur mon site internet, et un système de commentaire que peuvent poster les utilisateurs. Malheureusement, je n'arrive pas à lier automatiquement le commentaire à l'article. Pour que cela fonctionne, je suis obliger de rajouter un champs dans le formulaire pour que l'utilisateur rajoute à quel article fait référence le commentaire qu'il post.

C'est bien évidemment idiot, le visiteur commente l'article qu'il lit, il ne dois pas spécifier l'article. Cependant je n'arrive pas à remplir le champs correspondant à ma clé étrangère.

Voici le code de mon fichier blog/views.py :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# -*- coding: utf-8 -*-
from django.http import HttpResponse, Http404, HttpResponseRedirect
from django.shortcuts import redirect, render_to_response, render
from blog.models import Article, Categorie, Commentaire_Article
from django.contrib.auth.models import User
from blog.forms import Commentaire_ArticleForm
from django.core.context_processors import csrf
from django.contrib.auth import authenticate
 
def accueil(request):
    """ Afficher tous les articles du blog """
    articles = Article.objects.all().order_by('-date') # On sélectionne tous nos articles
    return render(request,'blog/blog.html',{'derniers_articles':articles})
 
def lire(request, id, slug):
 
#On sélectionne l'article dont l'id à été choisi
    try:
        article = Article.objects.get(id=id)
    except Article.DoesNotExist:
        raise Http404
#---------------------------------------------
#On affiche les commentaires de l'article
    commentaires_article=Commentaire_Article.objects.filter(article=id)
#--------------------------------------------- 
#On affiche le formulaire pour rajouter des commentaires
    if request.method=='POST':
        form=Commentaire_ArticleForm(request.POST)          
        if form.is_valid():
            titre=request.POST.get('titre')
            contenu=request.POST.get('contenu')
            article_commente=article.titre
            Commentaire_Article(titre=titre, contenu=contenu, article=article_commente).save()
 
            return render(request,'blog/commenter.html')
    else:
        form=Commentaire_ArticleForm()
#---------------------------------------------
    return render(request,'blog/lire.html',{'article':article, 'commentaires':commentaires_article,'form':form})
Le code du models en lien: blog/models.py
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
16
17
18
19
20
21
22
23
24
25
26
27
 
from django.db import models
from django.contrib import admin
 
class Categorie(models.Model):
    nom = models.CharField(max_length=30)
    def __unicode__(self):
        return self.nom
 
class Article(models.Model):
    titre = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False,verbose_name="Date de parution")
    categorie = models.ForeignKey(Categorie)
    def __unicode__(self):
        return u"%s" % self.titre
 
 
class Commentaire_Article(models.Model):
    titre = models.CharField(max_length=100)
    auteur = models.CharField(max_length=50)   
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
    article = models.ForeignKey(Article)
    def __unicode__(self):
        return u"%s" % self.titre
Et enfin, et peut-être le plus important, le message d'erreur est le suivant:


ValueError at /blog/article/4-4eme-article/
Cannot assign "'4eme article'": "Commentaire_Article.article" must be a "Article" instance.
Request Method: POST
Request URL: http://localhost:8000/blog/article/4-4eme-article/
Django Version: 1.5.4
Exception Type: ValueError
Exception Value:
Cannot assign "'4eme article'": "Commentaire_Article.article" must be a "Article" instance.


Je me doute bien que mon erreur est ici, mais cela ne m'aide pas à trouver une solution...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
article_commente=article.titre
Commentaire_Article(titre=titre, contenu=contenu, article=article_commente).save()
Mais comment faire... je vous remercie d'avance pour tous les conseils que vous aller me donner pour régler le problème, merci

Clément