mtc*_*tcg 4 django nullable foreign-keys
假设我在Django中有两个表,TableA并且TableB.表A包含一些布尔字段,bool并TableB包含一个外键字段for_fieldto TableA,它可以是Null.
class TableA(models.Model):
bool = models.BooleanField()
class TableB(models.Model):
for_field = models.ForeignKey('TableA', null=True)
Run Code Online (Sandbox Code Playgroud)
如果我想过滤表B,以便让所有的条目,其中for_field.bool是True或for_field为Null,什么是实现这一目标的最短路径?
我正在使用.filter((Q(for_field__is_null=True) | Q(for_field__bool=True)),但我想知道是否有更短的代码.
在一些实验之后,它似乎也.exclude(for_field__bool=False)将包含for_field__isnull=True条目,并且不会引发任何异常.您可以通过执行.exclude(for_field__bool=False).filter(for_field__isnull=True)并查看一些结果来确定.
老实说,我不知道哪个选项更快,但IMO你的两个Q对象的变体更具可读性,因为它显示了你真正想要的逻辑.所以我实际上建议你坚持下去.
| 归档时间: |
|
| 查看次数: |
6052 次 |
| 最近记录: |