我这样做是为了给每篇博客文章做一个段符,从标题开始:
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
必须是一个可调用的,即一个函数,或者是一个静态值。当您将其设置为slugify(f"{title} {show_date}"
时,您所做的就是设置一个静态值,这是这些字段定义本身的字符串表示:
djangodbmodelsfieldscharfield-djangodbmodelsfieldsdatetimefield
它不会在保存对象时神奇地从对象中获取这些字段的值。这个答案将引导您了解用于从其他字段自动填充段塞的选项。