Python 插入一个';隐藏时间戳字段';以模型形式?
我有一个简单的表单,允许用户创建帖子。这些字段是Python 插入一个';隐藏时间戳字段';以模型形式?,python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,我有一个简单的表单,允许用户创建帖子。这些字段是post\u title、post\u content、post\u date。用户将提供post\u标题和post\u内容,但是系统将自动生成post\u日期,并给出当前时间戳。因此,我将仅在表单中显示标题和内容。然而,当我尝试提交一个请求时,这给了我一个整数错误,它说非空约束失败:main\u app\u post.post\u date。我刚到Django,所以我真的不知道该怎么办。我希望无论何时用户发送Post请求(如果通过验证),它都会在
post\u title、post\u content、post\u date
。用户将提供post\u标题
和post\u内容
,但是系统将自动生成post\u日期
,并给出当前时间戳。因此,我将仅在表单中显示标题
和内容
。然而,当我尝试提交一个请求时,这给了我一个整数错误,它说非空约束失败:main\u app\u post.post\u date
。我刚到Django,所以我真的不知道该怎么办。我希望无论何时用户发送Post请求(如果通过验证),它都会在将其保存到数据库之前生成当前时间戳到Post\u date
。对此有什么建议吗?非常感谢
型号。py:
class Post(models.Model):
post_title = models.CharField(max_length=100)
post_content = models.TextField(max_length=400)
post_date = models.DateTimeField()
def __str__(self):
return self.post_title
class PostForm(forms.ModelForm):
class Meta:
model = models.Post
fields = ('post_title', 'post_content')
if request.method == 'POST':
form = forms.PostForm(request.POST)
if form.is_valid():
post_title = form.cleaned_data['post_title']
post_content = form.cleaned_data['post_content']
post_date = datetime.datetime.now().timestamp()
form.post_date = post_date
form.save(commit=True)
forms.py:
class Post(models.Model):
post_title = models.CharField(max_length=100)
post_content = models.TextField(max_length=400)
post_date = models.DateTimeField()
def __str__(self):
return self.post_title
class PostForm(forms.ModelForm):
class Meta:
model = models.Post
fields = ('post_title', 'post_content')
if request.method == 'POST':
form = forms.PostForm(request.POST)
if form.is_valid():
post_title = form.cleaned_data['post_title']
post_content = form.cleaned_data['post_content']
post_date = datetime.datetime.now().timestamp()
form.post_date = post_date
form.save(commit=True)
视图。py:
class Post(models.Model):
post_title = models.CharField(max_length=100)
post_content = models.TextField(max_length=400)
post_date = models.DateTimeField()
def __str__(self):
return self.post_title
class PostForm(forms.ModelForm):
class Meta:
model = models.Post
fields = ('post_title', 'post_content')
if request.method == 'POST':
form = forms.PostForm(request.POST)
if form.is_valid():
post_title = form.cleaned_data['post_title']
post_content = form.cleaned_data['post_content']
post_date = datetime.datetime.now().timestamp()
form.post_date = post_date
form.save(commit=True)
设置
class Post(models.Model):
post_title=models.CharField(最大长度=100)
post_content=models.TextField(最大长度=400)
post\u date=models.datetime字段(auto\u now\u add=True)
定义(自我):
返回自我。发布标题
参考:设置
class Post(models.Model):
post_title=models.CharField(最大长度=100)
post_content=models.TextField(最大长度=400)
post\u date=models.datetime字段(auto\u now\u add=True)
定义(自我):
返回自我。发布标题
参考:您可以指定一个
默认值并使其不可编辑,但事实上Django已经有了一个解决方案:您可以指定:
class Post(models.Model):
post_title=models.CharField(最大长度=100)
post_content=models.TextField(最大长度=400)
post\u date=models.datetime字段(auto\u now\u add=True)
定义(自我):
返回自我。发布标题
这将使字段不可编辑,因此默认情况下它不会显示在表单中,而且它将使用当前时间戳作为默认值。这意味着视图和表单不再需要担心这个问题。您可以指定一个默认值并使其不可编辑,但事实上Django已经有了一个解决方案:您可以指定:
class Post(models.Model):
post_title=models.CharField(最大长度=100)
post_content=models.TextField(最大长度=400)
post\u date=models.datetime字段(auto\u now\u add=True)
定义(自我):
返回自我。发布标题
这将使字段不可编辑,因此默认情况下它不会显示在表单中,而且它将使用当前时间戳作为默认值。这意味着视图和表单不再需要担心这个问题。非常感谢!:太感谢你了谢谢你,先生!这很简单!:')非常感谢你,先生!这很简单!:')