【问题标题】:Python Django: "Post.author" must be a "User" instance [closed]Python Django:“Post.author”必须是“用户”实例[关闭]
【发布时间】:2016-07-25 21:16:08
【问题描述】:

当我尝试为帖子分配作者或用户时,Django 会出现以下错误:

Cannot assign "<User: henrydavidzhu>": "Post.author" must be a "User" instance.

这是我的views.py:

user_passes_test(lambda u: u.is_authenticated)
def add_post(request):
    form = PostForm(request.POST or None)

    print("User: " + str(request.user))

    if form.is_valid() and request.user.is_authenticated():
        post = form.save(commit=False)
        post.author = request.user
        post.save()
        return redirect(post)
    else:
        print(form.errors)

    return render_to_response('webapp/startthread.html', 
                              { 'form': form },
                              context_instance=RequestContext(request))

这是我的forms.py:

class PostForm(forms.ModelForm):
    CHOICES = (
        ('Hardware and OS', '&nbsp;&nbsp;&nbsp;&nbsp;Desktops'),
    )
    field = forms.ChoiceField(choices=CHOICES)

    class Meta:
        model = Post
        exclude = ['author', 'slug']

这是我的models.py:

class Post(models.Model):
    title = models.CharField(max_length=500)
    slug = models.SlugField(unique=True)
    text = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, unique=True)

    def __unicode__(self):
        return self.title

    @models.permalink
    def get_absolute_url(self):
        return ('blog_post_detail', (), 
                {
                    'slug' :self.slug,
                })

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)

【问题讨论】:

标签: python django


【解决方案1】:

我正在使用 django 1.8,您的代码对我有用。 如果您的站点已登录,request.user 提供 User 实例 例如:

print request.user

【讨论】:

    【解决方案2】:

    我必须更改以下内容:

    author = models.ForeignKey(User)
    

    到这里:

    author = models.ForeignKey('auth.User')
    

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多