Python 基于Django类的泛型视图“CreateView”表单错误处理

Python 基于Django类的泛型视图“CreateView”表单错误处理,python,django,django-models,django-forms,django-class-based-views,Python,Django,Django Models,Django Forms,Django Class Based Views,我是CBV新手,正在尝试使用通用视图CreateView并理解它 在models.py中,我有以下模型: class CartConfig(models.Model): cart_key = models.CharField( 'Chave do Carrinho', max_length=40, db_index=True ) PAYMENT_OPTION_CHOICES = ( ('cash', 'Dinheiro'),

我是CBV新手,正在尝试使用通用视图CreateView并理解它

在models.py中,我有以下模型:

class CartConfig(models.Model):

    cart_key = models.CharField(
       'Chave do Carrinho', max_length=40, db_index=True
    )
    PAYMENT_OPTION_CHOICES = (
        ('cash', 'Dinheiro'),
        ...
    )
    payment_option = models.CharField(
        'Opção de Pagamento', choices=PAYMENT_OPTION_CHOICES, max_length=20,
        default='cash'
    )
    address = models.ForeignKey(Address, verbose_name='Endereço de entrega', 
        blank="false"
    )

    class Meta:
        verbose_name = 'Configuração do carrinho'
        verbose_name_plural = 'Configurações do carrinho'

    def __str__(self):
        return 'Cart configs for {}'.format(self.cart_key)
该模型使用ForeignKey来寻址,这也是用户模型中的ManyToManyfield。 因此,在my views.py中,我编辑了“address”字段的queryset,以仅处理与当前用户相关的地址:


在我的模板中,它运行良好,显示正确的地址列表,并通过post表单创建它。但如果用户没有选择地址,则会触发预期的错误NOT NULL约束失败:checkout\u cartconfig.address\u id。问题是,CreateView不应该处理此错误吗?我做错了什么?如何使用field.errors刷新页面以向用户显示所需的字段消息

您的模型设置不正确,blank=false。它需要是一个布尔值

address = models.ForeignKey(
    Address,
    verbose_name='Endereço de entrega',
    blank=False
)
关于Python的有趣事实:当解析为布尔值时,字符串的值为true

>>> bool("false")
True

blank应该是布尔值blank=False。也许字符串false解析为truthy,没有将所需的标记添加到html中的表单输入。@Brobin yeah,为这个错误感到羞耻hahah=,感谢您的回复!噢为这个普通的错误感到抱歉,哈哈。谢谢你的帮助,很有趣的事实=
>>> bool("false")
True