通过User类访问ForeignKey(Django)

时间:2012-02-18 07:31:55

标签: python django templates foreign-key-relationship

所以我有两个独立于彼此的类,但两者都通过使用ForeignKey与User(django)类相关。所以我的问题是,你究竟是如何“通过”User对象找到与User相关的东西?

下面是一个例子

class A(models.Model):
    item = models.ForeignKey(User)

class B(models.Model):
    box = models.ForeignKey(User)

现在在我看来我拉了B级的所有值

B.objects.all()

在我的模板中,我试图像这样访问它

{% for value in B %}
   {{ value.B.User.item }}
{% endfor %}

但这不起作用..如何通过用户类访问A类?

2 个答案:

答案 0 :(得分:0)

如果我记得我的头脑,外键会在您访问时自动遍历,因此只需value.box.item假设item是您的用户表中的一列。< / p>

至于从用户转到A,我相信this是你想要的,语法应该是some_user.a_set.all()。注意a_set确实是<model_name>_set,只有在some_user<model_name>之间存在已定义的外键关系时才会有效。

更新:

你似乎对Djangos模型有一些误解。 some_B_object.box将是User类型的对象。所以,如果我在上面从B到达A,你应该可以value.box.a_set.all()

答案 1 :(得分:0)

正确的方法是在模型中使用related_name,例如

class Item(models.Model):
    user = models.ForeignKey('auth.User', related_name='items')

class Box(models.Model):
    user = models.ForeignKey('auth.User', related_name='boxes')

然后,如果你有一个用户对象,你可以做

user.items.all()

user.boxes.all()

如果一个项目只能与一个盒子相关,那么我会用Item.box外键替换Item.user字段。