我有一个看起来像这样的 Django 模型:
class MyModel(models.Model):
field1 = models.IntegerField()
field2 = models.IntegerField()
nonDbField = SomeObject()
objects = MyCustomManager()
field1 实际上是 SomeObject 抽象类的 PK。
我想要一个自定义管理器,它对任何函数(all、filter、get 等)返回的每个值执行以下操作:
value.nonDbField = SomeObject.objects.get(pk=value.field1)
我已经测试过我可以像这样手动覆盖get:
class MyCustomManager(models.Manager):
def get(self, *args, **kwargs):
value = super(MyCustomManager, self).get(*args, **kwargs)
value.nonDbField = SomeObject.objects.get(listid=value.itemListID)
return value
但想知道是否有一种更简单的方法可以在所有功能中做到这一点。
会有很多人会说,“你为什么要这样做?”。它与遗留但仍处于活动状态的数据库的模型继承有关。