获取多对多对象
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()
需要应用查询集函数,因为它是多对多字段,并且需要它来序列化数据。
我正在构建一个简单的应用程序来学习 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()
需要应用查询集函数,因为它是多对多字段,并且需要它来序列化数据。