[英]Many-to-Many relationship in Django
我有以下 3 個模型:
class Platform(models.Model):
title = models.CharField(max_length=100, unique=True)
class Profile(models.Model):
title = models.CharField(max_length=110, unique=True)
platform = models.ManyToManyField(Platform)
class Register(models.Model):
...
profile = models.ManyToManyField(Profile)
...
我的意見.py
def info(request):
...
registers=Register.objects.all()
...
for register in registers:
profile= register.profile....???
我需要從注冊模型的查詢中知道一個或多個配置文件
可能嗎?
您可以通過以下方式獲取與一個或多個registers
相關的所有Profile
:
Profile.objects.filter(register__in=registers)
或者您可以獲取Register
對象的Profile
s:
def info(request):
# …
registers=Register.objects.all()
# …
for register in registers:
profiles = register.profile.all()
但在這里,您將訪問每個register
的數據庫,這可能無法很好地擴展。
您可以像@IainShelvington 所說的那樣,使用.prefetch_related(…)
[Django-doc]通過一個額外的查詢在內存中獲取所有這些相關的Profile
並在 Django/Python 級別執行 JOIN:
def info(request):
# …
registers=Register.objects.prefetch_related('profile')
# …
for register in registers:
profiles = register.profile.all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.