假设我在Django中有两个表,<asp:TextBox ID="textBox1" runat="server" />
<asp:LinkButton ID="link1" runat="server" Text="Button1" />
<asp:LinkButton ID="link2" runat="server" Text="Button2" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#<%= textBox1.ClientID %>").blur(function () {
if ($(this).val() === "X") {
$("#<%= link1.ClientID %>").hide();
$("#<%= link2.ClientID %>").hide();
}
});
})
</script>
和TableA
。表A包含一些布尔字段TableB
,而bool
包含一个外键字段TableB
到for_field
,可以为空。
TableA
如果我想过滤TableB以获得class TableA(models.Model):
bool = models.BooleanField()
class TableB(models.Model):
for_field = models.ForeignKey('TableA', null=True)
为for_field.bool
或True
为for_field
的所有条目,那么实现此目的的最短方法是什么?
我正在使用Null
,但我想知道是否有更短的代码。
答案 0 :(得分:6)
经过一些实验后,.exclude(for_field__bool=False)
似乎还会包含for_field__isnull=True
条目,并且不会引发任何异常。您可以通过执行.exclude(for_field__bool=False).filter(for_field__isnull=True)
并查看一些结果来确定。
老实说,我不知道哪个选项更快,但IMO你的两个Q
对象的变体更具可读性,因为它显示了你真正想要的逻辑。所以我实际上建议你坚持下去。
答案 1 :(得分:2)
我很确定,你的选择是最短的(如果我错了,请纠正我)。那是因为没有Q对象你不能进行OR查询。