IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

problème avec slugfield


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    growth hacker
    Inscrit en
    Novembre 2018
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : growth hacker
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2018
    Messages : 187
    Par défaut problème avec slugfield
    Bonjour et désoler de poser une autre question aussi vite. J'ai entendu parler du slugfield ça m'a intéressé alors j'ai voulu le faire, j'ai eu ce problème
    ValueError: invalid literal for int() with base 10
    Ce problème est dans la page de détail voilà le code utilisé.
    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
     
    article
       slug = models.SlugField(max_length=100, unique=True)
     
      def get_absolute_url(self):
            return reverse("article:detail", kwargs={"slug":self.slug})
     
     
     
    def create_slug(instance,new_slug=None):
        slug=slugify(instance.name)
        if new_slug is not None:
            slug=new_slug
        qs=Article.objects.filter(slug=slug).order_by("-id")
        exists=qs.exists()
        if exists:
            new_slug="%s-%s" %(slug,qs.first().id)
            return create_slug(instance,new_slug=new_slug)
        return slug
    def pre_save_article_receive(sender, instance,*args,**kwargs):
        if not instance.slug:
            instance.slug= create_slug(instance)
     
     
    pre_save.connect(pre_save_article_receive, sender=Article)
    url.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    url(r'^((?P<article_slug>[\w-]+)//$', views.detail, name='detail')
    Puis j'ai changé tous les article_id ou article.id en article_slug ou article.slug

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 129
    Par défaut
    En utilisant des SlugField, on risque d'utiliser des lettres, des entiers, ... voir la doc.

    Il est dans ton cas possible d'avoir cette erreur, si tu utilises la fonction int sur une lettre par exemple.

  3. #3
    Membre éclairé
    Homme Profil pro
    growth hacker
    Inscrit en
    Novembre 2018
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : growth hacker
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2018
    Messages : 187
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    En utilisant des SlugField, on risque d'utiliser des lettres, des entiers, ... voir la doc.

    Il est dans ton cas possible d'avoir cette erreur, si tu utilises la fonction int sur une lettre par exemple.
    Je l'ai ajouté, mais ça ne marche pas.
    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
     
    def create_slug(instance,new_slug=None):
        slug=slugify(instance.name,allow_unicod=True)"""allow_unicod=True new"""
        if new_slug is not None:
            slug=new_slug
        qs=Article.objects.filter(slug=slug).order_by("-id")
        exists=qs.exists()
        if exists:
            new_slug="%s-%s" %(slug,qs.first().id)
            return create_slug(instance,new_slug=new_slug)
        return slug
    def pre_save_article_receive(sender, instance,*args,**kwargs):
        if not instance.slug:
            instance.slug= create_slug(instance)
     
     
    pre_save.connect(pre_save_article_receive, sender=Article)
    ValueError: invalid literal for int() with base 10: 'u'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo