我对django比较陌生,我正在尝试实现一些modelforms。在
我的页面由两个视图组成,一个是政治部分,一个是体育部分,每一个视图都具有相同的评论形式(我的评论模型名为Comentario)。它有一个内容字段和一个注释所属部分的字段。两种观点基本上是一样的,所以我只想展示一下政治观点:
from django.contrib import messages
from django.shortcuts import render
from django.views.generic import CreateView
from usuarios.models import Usuario
from .forms import CrearComentario
from .models import Comentario
usuarios = Usuario.objects.all()
comentarios = Comentario.objects.all()
pag = ''
def politics(request):
if request.user.is_authenticated:
if request.method == 'POST':
form = CrearComentario(request.POST, instance=request.user)
if form.is_valid():
messages.success(request, 'Publicado!')
pag = 'politics'
form.save()
form = CrearComentario()
else:
form = CrearComentario(request.POST,instance=request.user)
else:
messages.warning(request, 'Comentario no válido')
form = CrearComentario(request.POST)
return render(request, 'main/politics.html', {'usuarios': usuarios,
'comentarios': comentarios,
'form': form})
如果您想知道,'pag'是一个控制变量,它由我的信号.py更新“pagina”字段的文件
我的自定义模型中的提交按钮有问题forms,表单显示正确,当我在表单中写入内容并提交时,它会显示一条成功消息,但注释不会出现在comment部分,也不会出现在django shell中。在
在政治.html在
^{pr2}$我的表单.py看起来像这样:
from django import forms
from .models import Comentario
class CrearComentario(forms.ModelForm):
contenido = forms.CharField(max_length = 250, required=False, widget=forms.Textarea)
pagina = forms.CharField(max_length = 250, required=False, widget=forms.HiddenInput())
class Meta:
model = Comentario
fields = ['contenido', 'pagina']
确定注释属于哪个节的字段('pagina')被隐藏,因为它是由我的信号.py文件:
from django.db.models.signals import pre_save
from django.dispatch import receiver
from .models import Comentario
from .views import pag
from .forms import CrearComentario
@receiver(pre_save, sender=Comentario)
def fijar_pagina(sender, instance, **kwargs)
if pag:
instance.pagina = pag
pag = ''
instance.save(update_fields['pagina'])
我没有收到任何错误消息,除了注释没有被保存之外,所有的行为都像它应该的那样
我也尝试过使用commit==False save来代替信号,但同样无效:
def politics(request):
if request.user.is_authenticated:
if request.method == 'POST':
form = CrearComentario(request.POST, instance=request.user)
if form.is_valid():
messages.success(request, 'Publicado!')
pag = 'politics'
comentario = form.save(commit=False)
comentario.pagina = 'sonsol'
comentario.save()
form = CrearComentario()
else:
form = CrearComentario(request.POST,instance=request.user)
else:
messages.warning(request, 'Comentario no válido)
form = CrearComentario(request.POST)
return render(request, 'main/politics.html', {'usuarios': usuarios,
'comentarios': comentarios,
'form': form})
usuarios
和{您应该将这两者都移到视图主体中,以便对每个请求运行查询
相关问题 更多 >
编程相关推荐