django 3.2:autoslugfield 返回无

Posted

技术标签:

【中文标题】django 3.2:autoslugfield 返回无【英文标题】:django 3.2 : autoslugfield return None 【发布时间】:2021-07-28 16:52:34 【问题描述】:

我在 django3.2 上安装了 autoslug

我的模特:

from autoslug import AutoSlugField

class Courses(models.Model):
    title = models.CharField(max_length=100, null=True)
    description = models.TextField(null=True)
    image = models.ImageField(upload_to=get_dynamic_path_course, null=True)
    price = models.PositiveIntegerField(null=True)

    slug = AutoSlugField(populate_from=get_populate_from, null=True, blank=True, allow_unicode=True)

    def __str__(self):
        return '%d :  %s => ,  %s' % (self.id, self.title, self.slug)

功能:

def get_populate_from(instance):
    return instance.title.replace(' ', '_')

我的问题:

slug 字段总是无

【问题讨论】:

【参考方案1】:

奇怪的是它不起作用。我也认为它的工作方式与您一样,但是您是否尝试过使用 lambda?

slug = AutoSlugField(populate_from=lambda instance: instance.title.replace(' ', '_'), null=True, blank=True, allow_unicode=True)

另一种选择是像这样更改 slugify 函数:

def custom_slugify(value):
    return value.replace(' ', '_')

slug = AutoSlugField(populate_from='title', slugify=custom_slugify, null=True, blank=True, allow_unicode=True)

【讨论】:

当我使用 lambda 时出现错误:无法序列化函数 lamba 当我使用 slogify - slug 没有

以上是关于django 3.2:autoslugfield 返回无的主要内容,如果未能解决你的问题,请参考以下文章

Django AutoSlugField 不考虑通过 Django Safe Delete 软删除的实例

Django 3.2 开发web项目

Django 从 3.2 -> 4.0 和 DRF 路径更新

django 3.2-在 sqlite3 中创建超级用户时出错

第一个Django程序

Django 安装