猿问

为什么无法获取Django模型主键的值?

下面是定义模型的代码

class Post(models.Model):
    id = models.IntegerField(primary_key=True)
    body = models.CharField(max_length=50000)
    timestamp = models.DateTimeField(auto_now=True)
    author_id = models.ForeignKey(settings.AUTH_USER_MODEL, default=None)

    def get_absolute_url(self):
        return reverse('display_post', args=[self.id])

下面是视图函数

@login_required
def new_post(request):
    form = PostForm()
    if request.method == 'POST':
        form = PostForm(data=request.POST)
        if form.is_valid():
            post = form.save(request.user)
            print(post.id)
            print(post.body)
            print(post.timestamp)
            print(post.author_id)
            # return redirect(post)
    return render(request, 'post.html', {'form': form})

这是数据库中的一条记录
15|hello world|2016-12-25 01:59:33.898952|zhou@zhou.com
15就是主键的值,除了print(post.id)为None外,其他都有值。
有谁知道为什么只有post.idNone,但又可以获取其他属性的值得原因吗?

PostForm代码

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('body',)

    def save(self, user_id):
        self.instance.author_id = user_id
        return super().save()
翻过高山走不出你
浏览 1039回答 3
3回答
随时随地看视频慕课网APP

相关分类

Python
我要回答