jul*_*icz 3 python django null django-models django-orm
我想写一些像这样的代码:
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()
...
Run Code Online (Sandbox Code Playgroud)
然而,这提高了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
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定这个问题之前已经提出过,但不知怎的,我无法找到任何与该特定用例匹配的东西.一个明显的解决方法当然是使字段可以为空,但据我所知,实际上会对数据库模式产生影响,我也喜欢Django提供的完整性检查.另一个是捕获异常并适当处理它.然而,这增加了许多样板代码.特别是当有多个像这样的字段时(try...except每个字段都有一个单独的块 - 现在这很难看).你会建议什么?
编辑:另一件事 - 我可以使用initial但是当涉及到外键时这是非常有限的.我并不总是知道在创作时我想要的默认类型.但是我会在初始化阶段知道它.而且,它可能依赖于其他字段的值.
gon*_*one 10
检查它是否具有属性集 -
if hasattr(self, 'field', False)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4608 次 |
| 最近记录: |