从标题和日期制作 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 来自其他领域的鼻涕虫的选项。