«Post.user» должен быть экземпляром «User» - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в использовании django, и я создаю простую веб-страницу, которая принимает вводимые пользователем данные и сохраняет их в форме модели

models.py:

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Post(models.Model):
    post = models.CharField(max_length=100)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

forms.py

from django import forms

from .models import Post


class HomeForm(forms.ModelForm):
    post = forms.CharField()

    class Meta:
        model = Post
        fields = ('post',)

views.py

from django.shortcuts import render, redirect

# Create your views here.
from django.http import HttpResponse
from django.views.generic import TemplateView

from .forms import HomeForm


class HomeView(TemplateView):
    template_name = 'home.html'

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

    def post(self, request):
        form = HomeForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.user = request.user
            post.save()

            text = form.cleaned_data['post']
            form = HomeForm()
            return redirect('home.html')

        args = {'form': form, 'text': text}
        return render(request, self.template_name, args)

home. html

{% block body %}
<div class ='container'>
    <h1>Home</h1>

    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}

        <button type ='submit'>Submit</button>
    </form>
</div>


{% endblock %}

Когда я запускаю сервер, веб-страница работает нормально, но когда Я набираю некоторые данные, появляется сообщение об ошибке и появляется сообщение: ValueError at /

Невозможно назначить ">": "Post.user" должен быть экземпляром "User".

Любая справка будет цениться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...