Передача информации из другой Django модели Createview - Листинг и обзоры
У меня есть два приложения Django, одно с объявлениями, а другое для аккаунтов. В приложении для аккаунтов у меня есть модель отзывов, прикрепленная к аккаунту, и я хочу, чтобы у пользователей была возможность создавать отзывы для объявления, которые в конечном итоге прикрепляются к аккаунту, а не к объявлению. Таким образом, все отзывы об объявлениях под конкретным аккаунтом прикрепляются к самому аккаунту, а не обязательно к объявлению.
Частью модели отзывов являются поля listing и listing_author, таким образом, я могу фильтровать по этим полям в дальнейшем. На странице подробностей объявления я хочу, чтобы пользователи могли нажать "Создать отзыв" и создать отзыв для объявления, которое находится под профилем. Я столкнулся с проблемой, когда не могу передать user_id и listing_id в CBV CreateView, поскольку информация со страницы listing_detail (включая эти два поля) не передается
Accounts Models.py
class ProfileReviews(models.Model):
user = models.ForeignKey(
get_user_model(),
on_delete = models.CASCADE,
related_name = 'reviews'
)
listing_item_id = models.UUIDField()
review = models.TextField(max_length = 1000)
rating = models.IntegerField()
reviewer = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
)
def __str__(self):
return self.review
Listings Model.py
class Listing(models.Model):
item_id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False
)
lender = models.ForeignKey(
get_user_model(),
on_delete = models.CASCADE,
related_name = 'lender'
)
item_name = models.CharField(max_length=200)
def __str__(self):
return self.item_name
def get_absolute_url(self):
return reverse('listing_detail', args=[str(self.item_id)])
Listings views.py
class CreateListingReview(CreateView):
model = ProfileReviews
template_name = 'listings/create_review.html'
fields = ['review', 'rating']
context_object_name = 'create_listing_review'
success_url = reverse_lazy('listing_detail')
def form_valid(self, form):
form.instance.reviewer = self.request.user
form.instance.user = self.request.POST.get('lender')
form.instance.listing_item_id = self.request.POST.get('item_id')
return super().form_valid(form)
Я думаю, что мне нужно передать пользователя и listing_item_id из поля lender и item_id в модели Listing, используя form_valid, но я не уверен, как передать конкретную информацию из конкретного объявления.