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 的保存方法(最后一行代码)为您完成剩下的工作。
我这里有一个使用 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 的保存方法(最后一行代码)为您完成剩下的工作。