DRF中用户与面包店注册时地址设为必填字段的模型配置疑问
如何将User和Padaria的地址字段设为必填
要在User和Padaria注册时让地址(endereco)成为必填字段,你当前的字段设置允许空值(null=True, blank=True),以下是正确的修改方案:
核心逻辑
Django模型字段中,null控制数据库层是否允许空值,blank控制表单验证层是否允许空值。这两个参数的默认值都是False——也就是说,字段默认就是必填状态。
修改方式(两种任选其一)
方式1:直接移除null=True, blank=True参数
利用默认规则,移除后字段自动变为必填,代码更简洁:
User类修改后
endereco = models.OneToOneField( Endereco, on_delete=models.CASCADE, related_name='user' )
Padaria类修改后
endereco = models.OneToOneField( Endereco, on_delete=models.CASCADE, related_name='padaria' )
方式2:显式设置null=False, blank=False
这种方式可读性更强,其他开发者能一眼明确该字段为必填项:
User类修改后
endereco = models.OneToOneField( Endereco, on_delete=models.CASCADE, related_name='user', null=False, blank=False )
Padaria类修改后
endereco = models.OneToOneField( Endereco, on_delete=models.CASCADE, related_name='padaria', null=False, blank=False )
注意事项
如果数据库中已有User或Padaria数据,修改前要确保所有现有记录都关联了对应的Endereco,否则执行数据迁移会失败。可以先给现有数据补全地址,或者先保留null=True完成迁移,补完数据后再改成必填设置。
内容的提问来源于stack exchange,提问作者Arthur Medeiros
相关产品推荐
相关产品推荐

