我正在使用 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
但是我想在不使用 ManyToMany 欄位的情況下進行反向操作,因為在我的案例中每只貓都有一個唯一的所有者。
我的目標是只使用一個查詢來做到這一點。
uj5u.com熱心網友回復:
要從視圖中的實體中獲取所有Cat實體,Owner您可以執行以下操作:
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 %}
uj5u.com熱心網友回復:
您可以添加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 的所有物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533581.html
標籤:Python姜戈django-模型django-查询集
