L'utilisation d'une classe ContentType dans les models et formulaires

0 votes

Pour faire simple :
Toutes les entrées de models doivent avoir des commentaires, et ce pour n'importe quel type d'entrée : image, vidéos, textes et même les commentaires des commentaires.
J'ai déjà mes classes models et mes classes formulaire mais je veux qu'il y ait possibilité de faire des commentaires là dessus pour cela je veux utiliser une classe ContentType pour que je n'ai pas à changer tous les models et maintenant et Je n'arrive pas à l'intégrer dans mon views...

Au fait j'ai créer beaucoup de classes de model et les formulaires avec forms.ModelForm correspondand aux models comme vous savez peut-être à chaque le formulaire le table l'enregistre Exemple:
Dans models.py

class Profile(models.Model):
       nom=moddels.CharField(max_length=255)
       prenom=models.CharField(max_length=255)
       date = ...
      ...
class Publication(models.Model):
        nom=models.CharFiled(max_length=255)
       pub=models.TextField()
      date = ....
      ....
class Video(models.Model):
         video =models.FileField(upload_to="video")
          date = ....
           ....

class Photo(models.Model):
        photo=models.ImageField(upload_to="photo")
       date = ......

Maintenant Je veux faire une classe 'ContentType' qui pourrait permettre à un utilisateur de commenter n'importe qu'elle entrée des models et même commenter des commentaires

class Commentaire(models.Model):
    auteur = models.CharField(max_length=255)
    contenu = models.TextField()
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

    def __str__(self):
        return "Commentaire de {} sur {}".format(self.auteur, self.content_object)

Dans forms.py

from app.models import Profile, Publication, Video, Photo, Commentaire

class ProfileForm(forms.ModelForm):
     class Meta:
           model = Profile
           fields  ="__all__"
.....

Class CommentaireForm(forms.ModelForm)
     class Meta:
         model = Commentaire
        fields = ("contenu")

Excusez d'être trop long et les erreurs éventuelles
Maintenant pour les vues concernant les autres models et formulaires pas grand soucis mais avec le CotentType comment développer la vue qui puisse prendre l'élément qu'il va commenter et le joindre les bons ID.
Avec les créations d'objets avec le shell ça se passe bien, mais une fonction de vue m'a ménancé de suicide et jusque là pas de solutions .

demandé 10-Mar-2017 par Mic3 (104 points)
reclassée 10-Mar-2017 par max

Quelle version de Django ? poste ton code pour qu'on y voit plus clair. Rajoute des tags qui correspondent au contexte de ta question "django 1.8, contentType, etc"

Se connecter ou S'inscrire pour répondre à cette question.

...