Пустые модели Django - PullRequest
       7

Пустые модели Django

0 голосов
/ 26 апреля 2018

Привет, я получаю полностью пустые Комментарии. И я не знаю почему.

Вот мой файл просмотра.

    from django.shortcuts import render, redirect
    from .forms import PostForm
    from django.views.generic import TemplateView
    from .forms import CommentForm
    from django.shortcuts import get_object_or_404
    from .models import Post

    class createPost(TemplateView):
        template_name = 'forum/createPost.html'

        def get(self, request):
            form = PostForm()
            return render(request, self.template_name, {'form': form})

        def post(self, request):
            form = PostForm(request.POST)
            if(form.is_valid()):
                form.save()
                return redirect('/forum')

    def add_comment(request, pk):
        post = get_object_or_404(Post, pk=pk)
        if(request.method == 'POST'):
            form = CommentForm(request.POST)
            if(form.is_valid()):
                comment = form.save(commit=False)
                comment.post = post
                comment.save()
                return redirect('/forum/')
        else:
            form = CommentForm()
        template = 'forum/addComment.html'
        context = {'form': form}
        return render(request, template, context)

А вот мой файл моделей

    from django.db import models

    class Post(models.Model):
        title = models.CharField(max_length=140)
        body = models.CharField(max_length=500)
        date = models.DateTimeField()

        def __str__(self):
            return self.title

    class Comment(models.Model):
        post = models.ForeignKey(Post, related_name='comments', null=True,         on_delete=models.SET_NULL)
        com_title = models.CharField(max_length=140)
        com_body = models.CharField(max_length=500)

        def __str__(self):
            return self.com_title           

И, наконец, вот формы

   from django import forms
   from .models import Post, Comment

   class PostForm(forms.ModelForm):
       title = forms.CharField(max_length=140)
       body = forms.CharField()
       date = forms.DateTimeField()

       class Meta:
           model = Post
           fields = ('title', 'body', 'date')

   class CommentForm(forms.ModelForm):
       title = forms.CharField(max_length=140)
       body = forms.CharField(max_length=500)

       class Meta:
           model = Comment
           fields = ('title', 'body')

Я действительно не знаю, почему я получаю эту ошибку. Я получаю комментарий, но он полностью пуст. Мэйби Это как-то связано с комментарием = form.save (commit = False), но я не знаю.

Я действительно новичок в Django, поэтому, пожалуйста, дайте мне знать, если вы знаете, как решить эту проблему. Кроме того, если есть что-то еще, что я должен добавить к этому вопросу, как URL и прочее, пожалуйста, дайте мне знать. Спасибо;)

1 Ответ

0 голосов
/ 27 апреля 2018

Попробуйте изменить вид на

class createPost(CreateView):
         template_name = 'forum/createPost.html'
         model=Post
         form_class=PostForm
         def form_valid(self, form):
             form.save()
             return http.HttpResponseRedirect('/forum')

, а затем форма

class PostForm(forms.ModelForm):

       class Meta:
           model = Post
           fields = ('title', 'body', 'date')   

PS: Если вы не хотите вносить какие-либо изменения в поля формы, то form_class не требуется. Вы можете предоставить поля для самого просмотра.

...