Django Как получить значение из рекурсивной ссылки на модель?
Я пытаюсь реализовать функцию комментирования комментариев через самоссылку.
error: models.ReComment.DoesNotExist: ReComment, соответствующий запросу, не существует.
Parent_comment модели ReComment был ForeignKey как self
Я распечатал self.kwarg и получил значение {'pk': 3, 'comment_id': 8}
models.py
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
feeling = models.CharField(max_length=50, validators=[validate_no_numbers, validate_no_special_characters])
score = models.IntegerField(validators=[validate_score, validate_no_special_characters])
dt_created = models.DateTimeField(auto_now_add=True)
dt_update = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="posts")
likes = GenericRelation("Like", related_query_name="post")
def __str__(self):
return self.title
class Comment(models.Model):
content = models.TextField(max_length=500, blank=False)
dt_created = models.DateTimeField(auto_now_add=True)
dt_update = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="comments")
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="comments")
likes = GenericRelation("Like", related_query_name="comment")
def __str__(self):
return self.content[:30]
class ReComment(models.Model):
comment = models.ForeignKey(Comment, on_delete=models.CASCADE, related_name="recomments")
content = models.TextField(max_length=500, blank=False)
dt_created = models.DateTimeField(auto_now_add=True)
dt_update = models.DateTimeField(auto_now=True)
parent_comment = models.ForeignKey("self", blank=True, null=True, on_delete=models.CASCADE, related_name="parent_comments")
def __str__(self):
return self.content[:30]
form.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = [
"content",
]
widget = {
'content': forms.Textarea,
}
class ReCommentForm(forms.ModelForm):
class Meta:
model = ReComment
fields = [
"content",
]
views.py
class CommentCreateView(LoginAndVerificationRequiredMixin, CreateView):
http_method_names = ["post"]
model = Comment
form_class = CommentForm
def form_valid(self, form):
form.instance.author = self.request.user
form.instance.post = Post.objects.get(id=self.kwargs.get("pk"))
return super().form_valid(form)
def get_success_url(self):
return reverse("post-detail", kwargs={"pk":self.kwargs.get("pk")})
class ReCommentCreateView(LoginAndVerificationRequiredMixin, CreateView):
http_method_names = ["post"]
model = ReComment
form_class = ReCommentForm
def form_valid(self, form):
self.object = form.save(commit=False)
form.instance.author = self.request.user
form.instance.post = Post.objects.get(id=self.kwargs.get("pk"))
form.instance.comment = Comment.objects.get(id=self.kwargs.get("comment_id"))
print(self.kwargs)
print(Post.objects.get(id=self.kwargs.get("pk")))
print(Comment.objects.get(id=self.kwargs.get("comment_id")))
form.instance.parent_comment = ReComment.objects.get(id=self.kwargs.get("parent_comment_id"))
self.object.save()
return super().form_valid(form)
Я не уверен, какую часть нужно исправить.
Значение parent_comment_id не появляется, какая часть неверна?
Как найти parent_comment_id?
пожалуйста помогите спасибо