форма действительна, но не может быть сохранена в бэкэнд - PullRequest
0 голосов
/ 07 февраля 2019

Я создал два приложения, блог приложения для обычного блога и приложение для асинхронного обмена сообщениями, оба с помощью домашней страницы.Форма подтверждена как отправленная и также действительна, но база данных не обновлена.

Первое, что я предположил, было то, что пользователь и контент не связаны, и перепробовал много способов, надеюсь, вы получите некоторую помощь от вас, ребята, спасибо

Вот коды:

домашняя страница:

<form method="POST" id="twit" action={% url 'twit:create' %}>
    {% csrf_token %}
    {{form|crispy}}
    <div class="form-group">
        <button type="submit">Post</button>
    </div>
</form>

блог / просмотров:

def home_view(request):
    form = TwitForm()
    post_list = Post.objects.all()
    context = {
        'form': form,
        'post_list':post_list,
    }
    return render(request, 'blog/blog_list.html', context)

твит / просмотров:

def twit_create(request):
    if request.method == 'POST':
        form = TwitForm(request.POST or None, instance=request.user)
        print('inside post')
        if form.is_valid():
            print('inside valid')
            form.save()
            return redirect('blog:home')
    else:
        print('inside else')
        form = TwitForm(instance=request.user)
    post_list = Post.objects.all()
    context = {
        'post_list': post_list,
        'form': form,
    }
    return render(request, 'blog/blog_list.html', context)

from django import forms
from .models import Twit

class TwitForm(forms.ModelForm):
    class Meta:
        model = Twit
        fields = ['message']

твит / модели

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

class Twit(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    message = models.TextField(max_length=100)
    published = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = 'twits'
        ordering = ['-published']
        verbose_name = 'twit'

    def __str__(self):
        return self.message[:10]

твит / формы

from django import forms
from .models import Twit

class TwitForm(forms.ModelForm):
    class Meta:
        model = Twit
        fields = ['message']

терминал:

inside post
inside valid
[07/Feb/2019 21:23:21] "POST /twit/create/ HTTP/1.1" 302 0
[07/Feb/2019 21:23:21] "GET / HTTP/1.1" 200 10548
[07/Feb/2019 21:37:33] "GET / HTTP/1.1" 200 10722
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...