django - 用户未与帖子模型关联
问题描述
我试图让当前登录的用户成为author
他们从 Post 模型创建的帖子的用户。到目前为止,他们在表格中填写的所有信息都被收集并成功存储在数据库中,但用户除外。目前它显示没有用户登录,我不确定为什么会这样。我试过提出请求。user 和 instance=request.user 用于 POST 和 GET 请求,到目前为止似乎没有任何效果。
视图.py
def create(request):
form = PostForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return render(request, 'classifieds/latest-ads.html')
else:
form = PostForm(instance=request.user)
args = {'form': form}
return render(request, 'classifieds/create-post.html', args)
模型.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=150)
price = models.CharField(max_length=100)
body = models.TextField()
contact_email = models.CharField(max_length=80, null=True)
contact_number = models.IntegerField(default=250, null=True)
pub_date = models.DateTimeField(null=True)
author = models.ForeignKey(User, null=True)
category = models.CharField(max_length=150, null=True)
picture = models.ImageField(upload_to='ad_pictures', default='')
def __str__(self):
return self.title
表格.py
from django import forms
from .models import Post
from django.contrib.auth.models import User
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = (
'price',
'title',
'body',
'author',
'contact_email',
'contact_number',
'picture',
)
这是create-post.html
渲染为模板的图片form.as_p
。请注意,该Author
字段为空白。如果我从下拉列表中选择正确的作者,则帖子将按原样保存。但是,我无法让登录用户显示出来。
任何意见是极大的赞赏。
解决方案
User 的外键字段的名称称为author
。但是您正在尝试使用名为 的未命名字段将用户添加到帖子中user
。
在create
视图中,在行:
...
instance.user = request.user
# ^^^^ this is your mistake
...
你需要使用instance.author = request.user
.
更新:您还需要author
从 ModelForm 中排除外键字段。
我不知道必须排除外键字段的确切原因,但如果我找到答案,我会更新答案。这很可能是一个错误,因为文档没有提到这样的事情。
推荐阅读
- java - 搜索中出现的不在类路径中的额外文件
- java - 为什么我会使用此代码获得 IllegalMonitorStateException?
- python - 名称“HTML”未定义
- c - 使用循环在c中绘制一个编号的三角形
- javascript - scrollTop = scrollHeight 在聊天机器人中不起作用
- c# - 处理 ASP.NET Core Web API 对象属性绑定
- bash - 如何替换一行中已知位置的未知值?
- excel - Range 类的 Excel VBA AutoFill 方法失败-仅存在一条记录时失败
- vega-lite - 如何在 Vega LIte 中创建相对标记位置
- function - 如何在 vim statusline 中显示字符串的实例数