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

时间:2017-09-13 01:30:28

标签: python mongodb mongoengine database

我有一个使用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字段?那可能吗?谢谢,抱歉我的英语不好!

1 个答案:

答案 0 :(得分:0)

你的问题应该是这样的: 如何在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类的save方法,并在未设置slug时添加默认设置功能。调用父类的save方法(最后一行代码)为你完成剩下的工作。