如何访问另一端的外键?



我正在使用Django的项目。这是我的models.py:

class Owner(models.Model):
name = models.CharField(max_length=200)
class Cat(models.Model):
owner = models.ForeignKey(Owner, on_delete=models.CASCADE)
pseudo = models.CharField(max_length=200)

我做到了:

first_owner = Owner.objects.get(id=1)

我想做一些类似的事情

first_owner.Cat

从主人那里得到所有的猫

我知道我可以这样做:

first_cat = Owner.objects.get(id=1)

owner = first_cat.owner

但是我想要反向操作而不使用manymany字段,因为在我的情况下,每只猫都有一个唯一的主人。

我的目标是只使用一个查询。

您可以在模型中添加related_name,并使用它从给定字段中获取作为ForeignKey引用的所有对象,如下所示:

class Cat(models.Model):
owner = models.ForeignKey(Owner, on_delete=models.CASCADE, 
related_name='cats') #---> you can put whatever related_name you want 
pseudo = models.CharField(max_length=200)

并像这样查询:

first_owner = Owner.objects.get(id=1)
all_instances = first_owner.cats.all()

您将获得Cats模型中作为ForeignKey引用的所有对象。

要从视图中的Owner实例中获取所有Cat实例,您可以执行以下操作:

first_owner = get_object_or_404(Owner,id=1)
all_instances = first_owner.cat_set.all()

在模板中你可以这样做:

{% for owner in first_owner.cat_set.all %}
{{owner.psuedo}}
{% endfor %}

相关内容

  • 没有找到相关文章

最新更新