0

我正在构建一个简单的应用程序来学习 Django。

基本上,一个投资组合中可以有多家公司。我想显示登录用户的某个投资组合的公司。

模型.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)

视图.py

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

但现在它只显示portfolioCompany 的ID。

如何在 UserPortfolio 中显示公司?

4

2 回答 2

0

啊找到了。我需要反过来工作。

portfolio = UserPortfolio.objects.filter(user=self.request.user)
myPortfolioCompanies = PortfolioCompany.objects.filter(UserPortfolio__in=portfolio)
myCompanies= Company.objects.filter(portfoliocompany__in=myPortfolioCompanies)
于 2017-06-18T19:37:19.933 回答
0

访问多对多字段并像全部一样对其应用查询集过滤器,或者过滤或计数以使用多对多字段。

 company = portfolio.Company.all()

需要应用查询集函数,因为它是多对多字段,并且是数据序列化所必需的。

于 2017-06-18T19:38:06.433 回答