Показать все комментарии от определенного пользователя в django
Я пытаюсь объединить все комментарии, по различным продуктам, от вошедшего пользователя на странице "Account".
Мой первоначальный план состоял в том, чтобы запрашивать все комментарии по идентификатору пользователя.
Поскольку я создал модель профиля, я подумал, что правильным подходом будет связать ее с id профиля, а не напрямую с id использования.
Очевидно, что это не работает.
Я близок к этому? Или я должен думать об этом совершенно по-другому? (новичок в программировании, как видно по коду)
Начинаю с моего models.py
class ReviewRating(models.Model):
user = models.ForeignKey(User,blank=True, on_delete=models.CASCADE)
product=models.ForeignKey(Product,related_name="comments", on_delete=models.CASCADE)
review=models.TextField(max_length=250)
def __str__(self):
return '%s - %s - %s'%(self.user, self.product, self.date_added)
class Profile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
general_reviews = models.ForeignKey(ReviewRating,null=True, on_delete=models.CASCADE)
def str(self): return str(self.user)
Views.py
def account(response, profile_id):
generalreviews_list = Profile.general_reviews.objects.all(pk=profile_id)
return render(response,"main/account.html", {'generalreviews_list':generalreviews_list})
УРЛЫ
path("account/<profile_id>/", views.account, name="account"),
Лучший способ - связать его с основной моделью пользователя, в вашем случае лучше всего связать его с user_id. После этого вы можете использовать следующий запрос для доступа ко всем комментариям, сделанным текущим зарегистрированным пользователем.
current_user = request.user
queryset_obj = Model.objects.filter(foreign_key_field_name=current_user)
Вам необходимо добавить атрибут related_name к полю пользователя в разделе ReviewRating
class ReviewRating(models.Model):
user = models.ForeignKey(User,blank=True, on_delete=models.CASCADE, related_name="comments")
Вот и все! Вы можете использовать его в HTML профиля следующим образом:
profile.html:
{% for comment in request.user.comments %}
{{ comment.review }}
{% endfor %}