Python MongoEngine Audit表子类

问题描述

我在Flask API上使用Mongonegine,并且我有一个带有audit的表(带有create_date和update_date的2列)。

当前模型如下:

class ProductModel(db.Document):
    meta = {'collection': 'product','queryset_class': CustomQuerySet}
    id = db.SequenceField(primary_key=True)
    url = db.StringField(required=True,unique=True)
    name = db.StringField(required=True,default=generate_random_string())
    user_id = db.ReferenceField(UserModel,required=True)
    create_date = db.DateTimeField()
    update_date = db.DateTimeField()
    vendor_id = db.ReferenceField(VendorModel,required=True)
    active = db.IntField(required=True,default=1)
    subscribed_list= db.EmbeddedDocumentListField(SubscribedListDocument)
    price_history = db.EmbeddedDocumentListField(PriceHistoryDocument)
    def to_json(self):
        data = self.to_mongo()
        data["vendor_id"] = {"name" :self.vendor_id.name,"active": self.vendor_id.active}
        data["user_id"] = {"name": self.user_id.name}
        return json_util.dumps(data)
    def save(self,*args,**kwargs):
        if not self.create_date:
            self.create_date = get_current_date()
        self.update_date = get_current_date()
        return super(ProductModel,self).save(*args,**kwargs)

我通过“ 保存”方法实现了审计部分。

我计划也对另一个表实施审核,并且我想通过另一个继承的类来实现这一点,因此我不会在每个模型中都复制save方法:

class AuditModel(Document):
    meta = {'allow_inheritance': True}
    create_date = DateTimeField(default=get_current_date)
    update_date = DateTimeField(default=get_current_date)
    # def save(self,**kwargs):
    #     if not self.create_date:
    #         self.create_date = get_current_date()
    #     self.update_date = get_current_date()
    #     print(self.create_date)
    #     return super(self).save(*args,**kwargs)

class ProductModel(db.Document,AuditModel):
......

但是它不起作用。

有什么想法吗?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)