簡體   English   中英

獲取ManyToMany對象

[英]Get ManyToMany objects

我正在構建一個簡單的應用程序來學習Django。

基本上,一個投資組合可以包含多個公司。 我想顯示已登錄用戶的某個投資組合的公司。

Models.py

class UserPortfolio(models.Model):
    name = models.CharField(max_length=128, default='X')
    user = models.ForeignKey(User)
    #Company = models.ManyToManyField(Company)

    def __str__(self):
        return self.name

class Company(models.Model):
    name = models.CharField(max_length=128, default='X')
    slug = models.SlugField(max_length=6, default='X', unique=True)

    def get_absolute_url(self):
        return reverse('news:detail',kwargs={'pk': self.pk})

    def __str__(self):
        return self.slug

class PortfolioCompany(models.Model):
    UserPortfolio = models.ForeignKey(UserPortfolio)
    Company = models.ManyToManyField(Company)

views.py

portfolio = UserPortfolio.objects.filter(user=self.request.user)
        myPortfolioRel = PortfolioCompany.objects.filter(UserPortfolio=portfolio)

但是現在它只顯示PortfolioCompany的ID。

如何在UserPortfolio中顯示公司?

啊找到了。 我需要反過來工作。

portfolio = UserPortfolio.objects.filter(user=self.request.user)
myPortfolioCompanies = PortfolioCompany.objects.filter(UserPortfolio__in=portfolio)
myCompanies= Company.objects.filter(portfoliocompany__in=myPortfolioCompanies)

訪問多對多字段,然后像對所有字段一樣應用查詢集過濾器,或過濾或計數以使用多對多字段。

 company = portfolio.Company.all()

需要應用查詢集函數,因為它是多對多字段,並且是數據序列化所必需的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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