Не могу связать новость и комментарий

Выводится ошибка:

ValueError: Cannot assign "<django.db.models.query_utils.DeferredAttribute object at 0x0307E628>": "Comment.news" must be a "News" instance.

она жалуется на form.news = news_filter

Но почему она жалуется я не понимаю. P.s.Я новичек

models.py

class Comment(models.Model):
    news = models.ForeignKey(News, verbose_name='новость', on_delete=models.CASCADE)
    author = models.ForeignKey(User, verbose_name='Автор', on_delete=models.CASCADE, default=True)
    email = models.EmailField(verbose_name='Почта')
    text = models.TextField(verbose_name='Комментарий')
    file = models.FileField(verbose_name='Файл для загрузки', upload_to='comments', blank=True)
    date = models.DateField(auto_now_add=True)

def __str__(self):
    return f'Имя пользователя: {self.author.first_name} {self.author.last_name} | Почта: {self.email} ' \
           f'| Имя пользователя: {self.author.username}'

class Meta:
    verbose_name = 'комментарий'
    verbose_name_plural = 'комментарии'

forms.py

class CommentForm(ModelForm):
def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    for name, item in self.fields.items():
        item.widget.attrs['class'] = f'form-control {name} mb-1 mt-1'

class Meta:
    model = Comment
    fields = ('text', 'file')

views.py

def news_page(request, pk):
news_filter = News.objects.filter(id=pk)
comments = Comment.objects.filter(news=pk)
if request.method == 'POST':
    form = CommentForm(request.POST)
    if form.is_valid():
        form = form.save(commit=False)
        form.author = request.user
        form.news = news_filter
        form.save()
        return HttpResponseRedirect(request.path_info)
else:
    form = CommentForm()
context = {
    'title': 'Новости',
    'news': news_filter,
    'form': form,
    'comments': comments,
}
return render(request, 'mainapp/news.html', context)

Ответы (1 шт):

Автор решения: Andrey Maslov

у тебя в коде идет news_filter = News.objects.filter(id=pk) в данном случае у тебя в news_filter хранится queryset (в котором находится одна новость), а в форме у тебя требуется один объект News ты можешь исправить это следующим образом добавив .first() или заменив .filter на .get

т.е.

news_filter = News.objects.filter(id=pk).first()

или

news_filter = News.objects.get(id=pk)
→ Ссылка