学习是最好的投资!
Django 无需「显式地定义主键」
它会自动为表添加一个 id 字段( 主键, 自增 )
可以考虑把你手动定义的主键去掉
需要看清楚,你的post对象是PostForm()而非Post(),你的PostForm表单处理对象有id初始值,但是你传来的request.POST值有没有id值呢,没有就自然是None了,你这个post如果是Post()对象,那么肯定是有id值的
有一个信息不详细没给出,就是 PostForm 你是如何定义的。PostForm 你是如何定义的。
PostForm
如果你这么定义PostForm,通过调用PostForm(request.POST).save()是可以得到你想要的结果的。
PostForm(request.POST).save()
class PostForm(forms.ModelForm): class Meta: model = Post
不过你的PostForm肯定不是这么定义的,因为post = form.save(request.user)是错误的使用方法,ModelForm的save方法只有一个参数,就是commit = False 或者 commit=True
post = form.save(request.user)
ModelForm
save
commit = False
commit=True
rrreee
Django 无需「显式地定义主键」
它会自动为表添加一个 id 字段( 主键, 自增 )
可以考虑把你手动定义的主键去掉
需要看清楚,你的post对象是PostForm()而非Post(),你的PostForm表单处理对象有id初始值,但是你传来的request.POST值有没有id值呢,没有就自然是None了,你这个post如果是Post()对象,那么肯定是有id值的
有一个信息不详细没给出,就是
PostForm
你是如何定义的。PostForm
你是如何定义的。如果你这么定义
PostForm
,通过调用PostForm(request.POST).save()
是可以得到你想要的结果的。不过你的PostForm肯定不是这么定义的,因为
如果你这么定义post = form.save(request.user)
是错误的使用方法,ModelForm
的save
方法只有一个参数,就是commit = False
或者commit=True
PostForm
,通过调用PostForm(request.POST).save()
是可以得到你想要的结果的。rrreee
不过你的PostForm肯定不是这么定义的,因为post = form.save(request.user)
是错误的使用方法,ModelForm
的save
方法只有一个参数,就是commit = False
或者commit=True
,表示是否将数据保存到数据库,默认True. 🎜 🎜源码见链接🎜