从标题和日期制作 slug 给了我 'djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield'
Making slug from title and date is giving me 'djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield'
我做这个是为了给每个博客做一个 slug post,来自标题:
from django.db import models
from django.utils.text import slugify
class post (models.Model):
title = models.CharField(max_length=200)
post = models.CharField(max_length=75000)
picture = models.URLField(max_length=200, default="https://i.ibb.co/0MZ5mFt/download.jpg")
show_date = models.DateTimeField()
slug = models.SlugField(unique=True, default=slugify(f"{title} {show_date}"), editable=False)
事实是,这是我得到的子弹:
http://127.0.0.1:8000/blog/blog/djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield/
我怎样才能让它成为 http://127.0.0.1:8000/blog/blog/slug-of-title-and-date
?
您尝试为 slug
设置默认值的方式不正确。 default
必须是 callable - 即函数 - 或静态值。当您将它设置为 slugify(f"{title} {show_date}"
时,您所做的只是设置一个静态值,它是这些字段定义本身的字符串表示形式:
djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield
它不会在保存对象时神奇地从对象中获取这些字段的值。 This answer 带您了解 auto-populating 来自其他领域的鼻涕虫的选项。
我做这个是为了给每个博客做一个 slug post,来自标题:
from django.db import models
from django.utils.text import slugify
class post (models.Model):
title = models.CharField(max_length=200)
post = models.CharField(max_length=75000)
picture = models.URLField(max_length=200, default="https://i.ibb.co/0MZ5mFt/download.jpg")
show_date = models.DateTimeField()
slug = models.SlugField(unique=True, default=slugify(f"{title} {show_date}"), editable=False)
事实是,这是我得到的子弹:
http://127.0.0.1:8000/blog/blog/djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield/
我怎样才能让它成为 http://127.0.0.1:8000/blog/blog/slug-of-title-and-date
?
您尝试为 slug
设置默认值的方式不正确。 default
必须是 callable - 即函数 - 或静态值。当您将它设置为 slugify(f"{title} {show_date}"
时,您所做的只是设置一个静态值,它是这些字段定义本身的字符串表示形式:
djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield
它不会在保存对象时神奇地从对象中获取这些字段的值。 This answer 带您了解 auto-populating 来自其他领域的鼻涕虫的选项。