假设我有一个名为User的模型,以及代表用户所做操作的其他模型,如“User_clicked”,“User_left”,“User_ate_cookie”等等。
User_ *模型具有不同的字段并从单个抽象类继承(User_do_something)
我的问题是:
什么是从所有相关表中查询所有模型的django方式,指向特定用户?
例如。我想做User.get_all_actions()并获取一个包含混合类型模型的列表,其中包含从User_do_something继承并指向特定用户的所有对象。
注意:性能至关重要。我不想进行多个数据库查询并组合列表,如果可能的话,我想用单个sql select来完成。
一些明确的代码:
class User(models.Model):
uuid = models.UUIDField(unique=True, default=uuid.uuid4)
creation_time = models.DateTimeField(auto_now_add=True)
def get_all_actions(self):
'''
return a list with ALL the actions this player did.
'''
??????? how do I do this query ???????
class User_do_action(models.Model):
user = models.ForeignKey(User)
creation_time = models.DateTimeField(auto_now_add=True)
class Meta:
abstract = True
class User_click(User_do_action):
... some fields
class User_left(User_do_action):
... some fields
class User_ate_cookie(User_do_action):
... some fields
etc. etc.
谢谢!