簡體   English   中英

Django 中的多對多關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM