例如我有一個有地址的人
class Persons(models.Model):
adress = models.ForeignKey(Adress, on_delete=models.DO_NOTHING, blank=True,
null=True)
class Adress(models.Model):
some_data = models.IntegerField()
我在這樣的另一個模型中有另一個相關資料
class Places(models.Model):
adress = models.ForeignKey(Adress, on_delete=models.DO_NOTHING)
如果地址設定為人員,我現在如何獲得人員和地點的查詢集?
uj5u.com熱心網友回復:
你可以得到Places一個的Persons與物件:
Places.object.filter(adress__persons=myperson)
如果您想批量執行此操作,您可以使用:
qs = Persons.objects.select_related('adress').prefetch_related('adress__places_set')
這將Places批量加載相關內容,因此您可以通過以下方式獲取這些內容:
for person in qs:
print(person.adress.places_set.all())
uj5u.com熱心網友回復:
你可以做這樣的事情,但首先你需要添加related_name你的人和地方外鍵
class Persons(models.Model):
adress = models.ForeignKey(Adress,related_name = "persons_adress",on_delete=models.DO_NOTHING, blank=True,null=True)
class Adress(models.Model):
some_data = models.IntegerField()
class Places(models.Model):
adress = models.ForeignKey(Adress, related_name = "places_addres",on_delete=models.DO_NOTHING)
在此更改后,您現在可以查詢
Adress.objects.filter(persons_adress__some_data = some_data,places_addres__some_data = some_data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338294.html
上一篇:在oracle中修改表上的CHECK約束的最佳方法是什么?
下一篇:過濾第一個多對多專案的查詢
