Как автоматически установить тему комментария в ту же тему, что и сообщение
я хочу иметь возможность создавать комментарии, нажимая на ссылку комментария под сообщением, каждое сообщение имеет тему, но я не могу получить комментарии под конкретным сообщением, поэтому я подумал добавить тему также для большей функциональности, но я нахожу это трудным для автоматического назначения темы на основе того, какое сообщение я комментирую
my views.py pk устанавливается как post.id
def comment(request, pk):
form = commentform()
context = {
'form' : form
}
if request.method == 'POST':
form = commentform(request.POST)
if form.is_valid():
forms = form.save(commit=False)
forms.posts = post.objects.get(id=pk)
forms.owner = request.user
forms.topics = topic.objects.get(id=pk)
forms.save()
return redirect('home')
return render(request, 'base/comment.html', context)
my models.py
class comments(models.Model):
topics = models.ForeignKey(topic, on_delete=models.CASCADE, SET_NULL=True, null=True)
created = models.DateTimeField(auto_now=True)
posts = models.ForeignKey(post, on_delete=models.CASCADE)
owner = models.ForeignKey(User, on_delete=CASCADE)
comment = models.TextField(max_length= 500)
def __str__(self):
return str(self.comment)
class post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
Topic = models.ForeignKey(topic, on_delete=models.CASCADE)
post = models.TextField(max_length=500)
created = models.DateTimeField(auto_now=True)
def __str__(self):
return f'{self.post}'
my forms.py
class commentform(ModelForm):
class Meta:
model = comments
fields = ['comment']
Если я правильно вас понял, вам нужно просто перемещаться по инстанциям.
Теперь, если комментарии к сообщению относятся к одной и той же теме, вам не следует указывать тему и в комментарии. Таким образом вы просто дублируете информацию, и это будет дополнительным усилием для синхронизации. Просто свяжите тему с постом, а затем пройдитесь по нему, чтобы получить его.
class comments(models.Model):
created = models.DateTimeField(auto_now=True)
posts = models.ForeignKey(post, on_delete=models.CASCADE)
owner = models.ForeignKey(User, on_delete=CASCADE)
comment = models.TextField(max_length= 500)
class post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
post = models.TextField(max_length=500)
created = models.DateTimeField(auto_now=True)
Для доступа к теме просто перейдите по ссылке,
post = post.objects.get(pk)
post.topic