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

查看:208
本文介绍了python - 为什么无法获取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()

解决方案

Django 无需「显式地定义主键」

它会自动为表添加一个 id 字段( 主键, 自增 )

可以考虑把你手动定义的主键去掉

这篇关于python - 为什么无法获取Django模型主键的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆