【问题标题】:Mongoengine - How to create a slug string field from name field?Mongoengine - 如何从名称字段创建一个 slug 字符串字段?
【发布时间】:2017-09-13 01:30:28
【问题描述】:

我这里有一个使用 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 字段自动完成?那可能吗?谢谢你,对不起我的英语不好!

【问题讨论】:

标签: python mongodb mongoengine database


【解决方案1】:

您的问题应该是这样的: 如何在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)

这样,如果 slug 未设置,您将覆盖 Document 类的保存方法并添加默认设置功能。父类的 save 方法的调用(最后一行代码)为您完成其余的工作。

【讨论】:

  • 谢谢...!你拯救了我的一天:D
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-06
  • 2015-11-20
相关资源
最近更新 更多