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