gpt4 book ai didi

python - 检查不可为空的字段是否为空

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:18 24 4
gpt4 key购买 nike

我想写一些这样的代码:

class SomeModel(models.Model):

field = models.ForeignKey(SomeOtherModel)

def __init__(self, *args, **kwargs):
super(SomeModel, self).__init__(*args, **kwargs)
if self.field is None:
self.field = SomeOtherModel()

...

但是这引发了 self.field.rel.to.DoesNotExist。 Django 代码对此非常清楚:

class ReverseSingleRelatedObjectDescriptor(object):

def __get__(self, instance, instance_type=None):

...

if val is None:
# If NULL is an allowed value, return it.
if self.field.null:
return None
raise self.field.rel.to.DoesNotExist

一个明显的解决方法当然是使该字段可以为空,但据我所知,这实际上会对数据库模式产生影响,而且我喜欢 Django 提供的完整性检查。另一种方法是捕获异常并适本地处理它。然而,这增加了很多样板代码。特别是当有多个这样的字段时(每个字段都有一个单独的 try...except block - 现在很难看)。我能做什么?

我可以使用 initial 但是当涉及到外键时这是非常有限的。我并不总是知道在创建时我希望拥有哪种默认值。然而,我会在初始化阶段知道它。此外,它还可能依赖于其他字段的值。

最佳答案

检查是否设置了属性-

if hasattr(self, 'field')

关于python - 检查不可为空的字段是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com