在django中选择相关对象

时间:2009-08-10 18:17:03

标签: python django

我有以下问题:

我的应用程序有2个模型:

1)

class ActiveList(models.Model):
    user = models.ForeignKey(User, unique=True)
    updatedOn = models.DateTimeField(auto_now=True)
    def __unicode__(self):
        return self.user.username

'''
GameClaim class, to store game requests.
'''
class GameClaim(models.Model):
    me = models.ForeignKey(ActiveList, related_name='gameclaim_me')
    opponent = models.ForeignKey(ActiveList, related_name='gameclaim_opponent')

在我的视图中,我将所有ActiveList对象all = ActiveList.objects.all()并将其传递给模板

在模板中,我循环遍历ActiveList中的每个项目,并创建一个在我的客户端应用程序中使用的xml文件。

问题是:

如何查询有关一个用户(例如测试,ActiveList的一部分)对循环用户的声明的信息

user2例如就像这样

{%  for item in activeList  %}

{% endfor %}

用户2是本案例中的项目

2 个答案:

答案 0 :(得分:1)

您正在查看的内容在视图中比模板更适合。我想你想要的东西:

claimer = User.objects.get(name='test')
claimed_opponents = User.objects.filter(gameclaim_opponent__me__user=claimer)

然后您可以将它们传递到模板中,然后直接对它们进行操作。

您可能还会考虑重新思考表格彼此之间的关系。我认为声明应该直接在用户之间进行,并且给定用户是否处于活动状态应该是关系的外部。我认为用户应该可以声称与非活动用户玩游戏,即使他们必须等待用户重新激活才能开始游戏。

答案 1 :(得分:0)

我不确定我是否完全理解您的问题,但我认为您所寻找的信息可能就在这里:http://docs.djangoproject.com/en/dev/topics/db/queries/

如果你在那里找不到答案,也许你可以澄清一下这个问题?