我在models.py中有课:
class Companies(models.Model):
id = models.AutoField(unique=True, primary_key=True, null=False, blank=False)
is_active = models.BooleanField(default=1, editable=False)
在HTML模板中有这个radiogroup:
<fieldset>
<legend>Status</legend>
<input type="radio" name="is_active" value="">All</label>
<input type="radio" name="is_active" value="True" checked="1">Active</label>
<input type="radio" name="is_active" value="False">Not Active</label>
</fieldset>
使用jquery我想序列化()radiogroup并发送到tastypie API以从模型中获取过滤数据:
来自查询的网址将如下所示:
http://localhost:8000/api/view/company/list/?is_active=
结果将仅显示is_active字段
中 False 值的行如果我使用?is_active = 1 结果将仅为真
如何从表中获取 True和False 行?
我可以在输入中更改“name”attr,但所有输入中的名称必须相同才能保持分组。
答案 0 :(得分:1)
如果您在Django端传递?is_active=
,请求将在POST字典中包含'is_active':
>>> 'is_active' in request.POST`
True
问题是内容是字符串,这里是空的:
>>> request.POST['is_active']
'' # Or None I am not quite sure.
根据Python语义:
>>> bool(None)
False
>>> bool(False)
False
>>> bool(0)
False
>>> bool('')
False
所有否定值均为:[]
,()
,{}
,set()
,0
,''
,None
, False
如果此密钥为空,或者不调用该值为空的API,则必须覆盖build_filters
以删除此密钥。
def build_filters(self, filters=None):
if filters is None:
filters = {}
if "is_active" in filters and filters["is_active"] == '': # or == None you have to check
del filters['is_active']
return super(MyResource, self).build_filters(filters)