Почему django ManytoManyFied не сохраняет некоторые модели?
Ниже приведен мой models.py.
class Report(models.Model):
company_name = models.CharField(max_length = 40, default = "-")
favorite = models.ManyToManyField(settings.AUTH_USER_MODEL,
through='Fav', related_name='favorite_reports')
def __str__(self):
return self.company_name
class Fav(models.Model) :
report = models.ForeignKey(Report, on_delete=models.CASCADE)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,
related_name='favs_users')
class Meta:
unique_together = ('report', 'user')
def __str__(self) :
return '%s likes %s'%(self.user.username, self.report.company_name[:10])
Ниже views.py
def post(self, request, pk) :
t = Report.objects.get(id = pk)
fav = Fav(user=request.user, report=t)
try:
fav.save() # In case of duplicate key
print(request.user.favorite_reports) #home.Report.None
print('t =', t.favorite) # t = auth.User.None
print('fav =',fav.report, fav.user) # fav = untitle hello1
print('uesr =',request.user, request.user.favorite_reports,request.user.favs_users) #uesr = hello1 home.Report.None home.Fav.None
except IntegrityError as e:
pass
return redirect('home:homepage')
Я хочу показывать пользователю разный цвет кнопки, если пользователь предпочитает какой-то отчет или нет. Поэтому я проверил request.user.favorite_reports и request.user.favs_users после сохранения Fav но он возвращает home.Report.None home.Fav.None
Но когда я печатаю fav.report, fav.user, он возвращается нормально. Почему это произошло?
Как проверить user Fav некоторые report в template?
нравится {% if report.company_name in user.favorite_reports %}, но не работает
Вы должны позвонить request.user.favorite_reports.all()