我有一个使用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字段?那可能吗?谢谢,抱歉我的英语不好!
答案 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方法(最后一行代码)为你完成剩下的工作。