【发布时间】:2020-08-21 08:00:51
【问题描述】:
我在 Flask API 上使用 Mongonegine,并且我有一个带有审计的表(2 列带有 create_date 和 update_date)。
目前模型如下:
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”方法中实现了审计部分。
我还计划在另一个表上实现审计,我想用另一个继承的类来实现,像这样,所以我不会在每个模型中复制 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, *args, **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):
......
但它不起作用。
有什么想法吗?
谢谢。
【问题讨论】:
标签: python mongodb flask mongoengine