问题描述
我在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 (将#修改为@)