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)
定义(自我):
返回自我。发布标题

这将使字段不可编辑,因此默认情况下它不会显示在表单中,而且它将使用当前时间戳作为默认值。这意味着视图和表单不再需要担心这个问题。

非常感谢!:太感谢你了谢谢你,先生!这很简单!:')非常感谢你,先生!这很简单!:')