Python Django-将经过身份验证的用户分配给post(自动)
我正在制作一个类似推特的小应用程序,你可以在其中“推特”。我已经设置了登录、注销、注册和写新帖子的逻辑。但是现在,当用户登录时,我希望用户名自动分配给登录的用户。 models.pyPython Django-将经过身份验证的用户分配给post(自动),python,django,django-models,Python,Django,Django Models,我正在制作一个类似推特的小应用程序,你可以在其中“推特”。我已经设置了登录、注销、注册和写新帖子的逻辑。但是现在,当用户登录时,我希望用户名自动分配给登录的用户。 models.py class Tweet(models.Model): image = models.ImageField(null=True, blank=True) text = models.TextField(max_length=300, default='') created_at = model
class Tweet(models.Model):
image = models.ImageField(null=True, blank=True)
text = models.TextField(max_length=300, default='')
created_at = models.DateTimeField(default=timezone.now)
user = models.ForeignKey(User, on_delete=models.CASCADE)
forms.py
class NewTweet(forms.ModelForm):
class Meta:
model = Tweet
fields = ['image', 'text']
我只显示图像和文本字段。应自动填写创建的_at和用户属性。现在在my views.py中,我负责保存新帖子(推文):
views.py
我试图通过clean_data attr分配用户。和request.user,但这不起作用并抛出一个错误
IntegrityError at/new tweet NOT NULL约束失败:
主页\u tweet.user\u id
在html文件中,我只是将
{{tweet}
粘贴到表单标记中。我知道我找到了正确的用户,因为当我打印request.user时,登录的用户显示正确。有人能解决我的问题吗?使用commit=False
@login_required
def newTweet(request):
if request.method == 'POST':
new_tweet = NewTweet(request.POST)
if new_tweet.is_valid():
tweet = new_tweet.save(commit=False)
tweet.user = request.user
tweet.save()
return redirect('homepage')
else:
new_tweet = NewTweet()
return render(request, 'homepage/new-tweet.html', {
'tweet': new_tweet
})
@需要登录\u
def newTweet(请求):
如果request.method==“POST”:
new_tweet=NewTweet(request.POST)
如果新的_tweet.is_valid():
tweet=new_tweet.save(commit=False)
tweet.user=request.user
tweet.save()
返回重定向('主页')
其他:
new_tweet=NewTweet()
返回呈现(请求“homepage/new tweet.html”{
“推特”:新推特
})
参考资料:
- 使用
commit=False
@login_required
def newTweet(request):
if request.method == 'POST':
new_tweet = NewTweet(request.POST)
if new_tweet.is_valid():
tweet = new_tweet.save(commit=False)
tweet.user = request.user
tweet.save()
return redirect('homepage')
else:
new_tweet = NewTweet()
return render(request, 'homepage/new-tweet.html', {
'tweet': new_tweet
})
@需要登录\u
def newTweet(请求):
如果request.method==“POST”:
new_tweet=NewTweet(request.POST)
如果新的_tweet.is_valid():
tweet=new_tweet.save(commit=False)
tweet.user=request.user
tweet.save()
返回重定向('主页')
其他:
new_tweet=NewTweet()
返回呈现(请求“homepage/new tweet.html”{
“推特”:新推特
})
参考资料: