python - django 创建后将用户重定向到帖子

标签 python django django-models django-forms django-views

我想在使用 Django 表单创建帖子后将用户重定向到该帖子

在模型中

class Text(models.Model):

    title = models.CharField(max_length=200, null=True)
    document = models.TextField(max_length=None, null=True)
    requirements = models.TextField(max_length=200, null=True)
    date_created = models.DateField(auto_now_add=True, null=True)
    deadline = models.DateField(null=True)

    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

    def __str__(self):
        return self.title

在我看来.py

    if request.method == "POST":   
        form = TextForm(request.POST)
        if form.is_valid() and request.user.is_authenticated:
            user = request.user
            text = form.save(commit=False)
            author = User.objects.filter(email=user.email).first()
            text.author = author
            form.save()
            form = TextForm()

    context = {'form': form, 'text': text}

    return render(request, 'main/text.html', context)

在我的 forms.py 中

class TextForm(ModelForm):
    class Meta:
        model = Text
        fields = ['title','document','requirements','deadline']
        widgets = {
            'title' : forms.TextInput(attrs={'placeholder':'Title','class':'form-control m-2 mb-4 pb-2'}),
            'deadline' : forms.DateInput(attrs={'placeholder':'Deadline','type':'date','class':'form-control m-2 pt-2',
            'id':'opendate'}),
            'requirements' : forms.Textarea(attrs={'placeholder':ps_note,'class':'form-control col m-2','rows':'3'}),
            'document' : forms.Textarea(attrs={'placeholder':ps_text,'class':'form-control'}),

        }

在我的 urls.py 中

from django.urls import path
from . import views

urlpatterns = [

    path('', views.home, name='home'),
    path('text/<str:pk>', views.text, name="text"),
    path('signin/', views.signin, name="signin"),
    path('signup/', views.signup, name="signup"),
    path('logout/', views.logout, name="logout"),
]
 

我必须添加这个以便 stackoverflow 接受我的问题,因为它说它主要是代码,即使在说了我认为的所有细节之后也是如此

最佳答案

我认为你必须使用“commit”

form.save(commit=True)

检查这个答案

enter link description here

关于python - django 创建后将用户重定向到帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63675860/

相关文章:

python - 如何使用 matplotlib 生成逻辑方程 K = 1 的向量场图?

python - Django 中带有前缀的表单中的关键错误

javascript - 在 JS 脚本中使用 Django 模板标签可以吗

python - Django 模板/ View 与轮播的问题

python - 如何将csv数据导入django模型

python - 使用gitignore分隔开发和生产环境

python - 套接字错误 : [Errno 111] when trying to connect to a socket

django - 更改显示表单错误消息时 django 使用的字段名称

python - 没有足够的值来解包(预期 3,得到 1)

python - 如何在django-sphinx下自动重建Sphinx索引?