django查询多个表,外键指向self

时间:2015-10-04 10:34:16

标签: sql django django-models django-queryset

假设我有一个名为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.

谢谢!

0 个答案:

没有答案