所以我有两个独立于彼此的类,但两者都通过使用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类?
答案 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字段。