Python Django-将经过身份验证的用户分配给post(自动)

Python 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

我正在制作一个类似推特的小应用程序,你可以在其中“推特”。我已经设置了登录、注销、注册和写新帖子的逻辑。但是现在,当用户登录时,我希望用户名自动分配给登录的用户。 models.py

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”{
      “推特”:新推特
      })
      参考资料: