Mongoengine - 如何从名称字段创建一个 slug 字符串字段?

Mongoengine - How to create a slug string field from name field?

我这里有一个使用 Mongoengine 的模型:

class Movies(BaseModel):
    movie_id = StringField(min_length=models.MOVIE_ID['MIN'], max_length=models.MOVIE_ID['MAX'], required=True)
    name = StringField(min_length=models.MOVIE_NAME['MIN'], max_length=models.MOVIE_NAME['MAX'], required=True)
    slug = StringField(default=None)
    description = StringField(max_length=models.DESCRIPTION['MAX'], default=None)
    views = IntField(default=0)

我只想知道如何从上面的名称字段中自动完成该 slug 字段?那可能吗?谢谢你,抱歉我的英语不好!

你的问题应该是这样的: 如何在mongoengine中将一个字段的默认值设置为另一个字段的值?

这里已经回答了这样的问题: mongoengine default value from another field

因此,在您的情况下,代码可以是这样的:

class Movies(BaseModel):
    movie_id = StringField(min_length=models.MOVIE_ID['MIN'], max_length=models.MOVIE_ID['MAX'], required=True)
    name = StringField(min_length=models.MOVIE_NAME['MIN'], max_length=models.MOVIE_NAME['MAX'], required=True)
    slug = StringField(default=None)
    description = StringField(max_length=models.DESCRIPTION['MAX'], default=None)
    views = IntField(default=0)

def save(self, *args, **kwargs):
    if not self.slug:
        self.slug = self.name
    return super(Movies, self).save(*args, **kwargs)

这样,您可以覆盖 Document class 的保存方法,并在未设置 slug 的情况下添加默认设置功能。调用 parent class 的保存方法(最后一行代码)为您完成剩下的工作。