微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django.core.exceptions.FieldError: 'pub_date' cannot be specified for Article model form as it is a non-editable field解决方法

在django开发中,使用django form时提示错误:@H_404_1@

  File "D:\software\python3.6\lib\site-packages\django\forms\models.py", line 256, in __new__
    apply_limit_choices_to=False,  File "D:\software\python3.6\lib\site-packages\django\forms\models.py", line 149, in fields_for_model
    f.name, model.__name__)
django.core.exceptions.FieldError: 'pub_date' cannot be specified for Article model form as it is a non-editable fiel

model.py@H_404_1@

class Article(TimeModel):
   
    title = models.CharField(max_length=150, verbose_name='文档标题')
    writer = models.CharField(max_length=20, verbose_name='作者')
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='创建人')
    category = models.ForeignKey(Category, db_index=True, verbose_name='分类')
    arc_type = models.SmallIntegerField(default=0, choices=TYPE, verbose_name='文章类型')
    sort_rank = models.SmallIntegerField(default=0, verbose_name='文档排序')
    status = models.SmallIntegerField(default=STATUS_norMAL, choices=STATUS_ITEMS, verbose_name='文章状态')
    pub_date = models.DateTimeField(auto_Now_add=True, verbose_name='发布时间')

经过阅读下面文章,发现如果DateTimeField设置了auto_Now_add=True导致,即使设置了editable=True,也是不支持修改。   @H_404_1@

注意:@H_404_1@

选项auto_Now_add,auto_Now和default互相排斥。这些选项的任何组合都将导致错误。@H_404_1@

当前实现,设置auto_Now或auto_Now_add以 True会导致该领域拥有editable=False和blank=True 设置。@H_404_1@

https://groups.google.com/forum/#!topic/django-users/74h8uPPiVoQ@H_404_1@

auto_Now_add官方文档:@H_404_1@

https://docs.djangoproject.com/zh-hans/2.2/ref/models/fields/#django.db.models.DateField.auto_now_add@H_404_1@

解决办法:@H_404_1@

class Article(TimeModel):
   
    title = models.CharField(max_length=150, verbose_name='文章状态')
    pub_date = models.DateTimeField(verbose_name='发布时间')


@H_404_1@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐