Запрос модели ManyToMany
У меня есть 2 модели Project
и Investor
Project
модель имеет поле под названием project_investors
с ManyToMany к Investor
модели.
Модели
class Investor(models.Model):
investor_name = models.CharField(max_length=50, blank=False, unique=True)
investor_website = models.URLField(max_length=100, blank=True)
investor_portfolio_website = models.URLField(max_length=100, blank=True)
investor_description = models.TextField(blank=True)
investor_investments = models.TextField(blank=True)
def __str__(self):
return str(self.investor_name)
class Project(models.Model):
project_name = models.CharField(max_length=50, blank=False, unique=True)
project_website = models.URLField(max_length=50, blank=True)
project_description = models.TextField(blank=True)
project_investors = models.ManyToManyField(Investor, blank=True)
def __str__(self):
return str(self.project_name)
Затем у меня есть страница, на которой отображается информация об инвесторе, и я пытаюсь показать, какие проекты были связаны с этим инвестором.
myview.py
@login_required
def show_investor_details(request,investor_id):
investor = Investor.objects.get(pk=investor_id)
form = InvestorForm(request.POST or None, instance=investor)
project = Project.objects.all()
project_list = get_object_or_404(Project, project_investors=investor_id)
return render(request, 'pages/investor_details.html', {"investor": investor, "form": form,"project": project,'project_list':project_list})
Я не уверен, какой правильный запрос нужно передать сюда
project_list = get_object_or_404(Project, project_investors=investor_id)
так как при этом возникает ошибка:
'Project' object is not iterable
Или, может быть, у меня неправильная структура модели?
аналогичный вопрос был задан и отвечен здесь https://stackoverflow.com/a/70272979/13443114
но чтобы быть явным... используйте
@login_required
def show_investor_details(request,investor_id):
investor = Investor.objects.get(pk=investor_id)
form = InvestorForm(request.POST or None, instance=investor)
project_list = investor.project_set.all()
return render(request, 'pages/investor_details.html', {"investor": investor, "form": form,"project": project,'project_list':project_list})