Col*_*ole 3 django django-models
我希望能够在模型中查询特定浮点字段没有值的记录.问题是基本查询:
Model.objects.filter(float_field__is_null=True)
Run Code Online (Sandbox Code Playgroud)
返回以下错误:django.core.exceptions.FieldError: Unsupported lookup 'is_null'.
要进行测试,请创建以下模型:
class FloatFieldModel(models.Model):
date = models.DateField()
val = models.FloatField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
然后:
>>> objects = FloatFieldModel.objects.filter(val__is_null=True)
>>> django.core.exceptions.FieldError: Unsupported lookup 'is_null' ...
Run Code Online (Sandbox Code Playgroud)
如何针对特定浮点字段没有值的记录过滤模型?换句话说,最好的工作是什么?
我希望能够做的是设置一个只更新没有任何值的行的例程,但跳过那些已经具有指定值的行(同时最有效地使用我的数据库).我的尝试看起来像:
for date in dates:
try:
FloatFieldModel.objects.filter(
date=date,
val__is_null=True
).update(val=42.0)
except FloatFieldModel.DoesNotExist:
pass
Run Code Online (Sandbox Code Playgroud)
我想我可以这样做:
objects = FloatFieldModel.objects.all()
for obj in objects:
if obj.val is None and obj.date in set(dates):
obj.val = 42.0
obj.save()
Run Code Online (Sandbox Code Playgroud)
我尝试的是一个更有效的过程,而不是在保存之前需要将每个对象从数据库读入内存.
mad*_*han 19
查找isnull 不是 is_null https://docs.djangoproject.com/en/dev/ref/models/querysets/#std:fieldlookup-isnull
Model.objects.filter(float_field__isnull=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5006 次 |
| 最近记录: |