2

当我想从中创建新对象时,product出现此错误:

slugify() got an unexpected keyword argument 'allow_unicode'

这是我的模型:

class BaseModel(models.Model):
    created_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True,)
    slug = models.SlugField(null=True, blank=True, unique=True, allow_unicode=True, max_length=255)
    class Meta:
        abstract = True


class Product(BaseModel):
    author = models.ForeignKey(User)
    title = models.CharField()
     # overwrite your model save method
    def save(self, *args, **kwargs):
        title = self.title
        # allow_unicode=True for support utf-8 languages
        self.slug = slugify(title, allow_unicode=True)
        super(Product, self).save(*args, **kwargs)

我也为其他应用程序(博客)运行了相同的模式,我没有遇到这个问题。 这个应用程序有什么问题?

4

2 回答 2

5

由于该slugify功能在其他应用程序中工作,这意味着您使用了不同的功能,至少在该文件中通过slugify标识符引用。这可能有几个原因:

  1. 您导入了错误的slugify函数(例如slugify模板过滤函数 [Django-doc]
  2. 您确实导入了正确的函数,但稍后在文件中您导入了另一个具有该名称的函数slugify(可能通过别名或通配符导入);或者
  3. 您在文件中定义了一个类或函数slugify(可能在导入之后slugify)。

不管是什么原因,它都指向了“错误”的函数,因此它无法处理命名的参数allow_unicode

您可以通过重新组织导入或为函数/类名称指定不同的名称来解决此问题。

于 2019-08-03T16:33:29.030 回答
0

升级 Django,即allow_unicode1.9 版中引入的参数,或调用不带该参数的函数。

于 2019-08-03T16:27:19.343 回答