views.py:
q3=KEBReading.objects.filter(datetime_reading__month=a).filter(datetime_reading__year=selected_year).values("signed")
for item in q3:
item["signed"]="signed"
print item["signed"]
q3.save()
如何将字段保存到数据库中?我正在尝试使用值保存名为“signed”的字段。如果我q3.save()
,它会给出错误,因为它是一个查询集。我正在从数据库进行查询,然后根据结果,想要将值设置为字段并保存。
prevdate=KEBReading.objects.filter(datetime_reading__lt=date)
我从数据库获取的所有行都小于当前日期。但我只想要最新的记录。如果我进入2012-06-03。我想查询我希望日期少于这个日期,即此前的日期。可以求助吗?
答案 0 :(得分:0)
q3 = KEBReading.objects.filter(datetime_reading__month=a,
datetime_reading__year=selected_year)
for item in q3:
item.signed = True
item.save()
答案 1 :(得分:0)
尝试使用update query:
如果signed
是booleanfield:
q3 = KEBReading.objects.filter(datetime_reading__month = a).filter(datetime_reading__year = selected_year).update(signed = True)
如果是charfield:
q3 = KEBReading.objects.filter(datetime_reading__month = a).filter(datetime_reading__year = selected_year).update(signed = "True")
评论更新:
如果要根据datetime_reading
月提取记录,可以通过提供月份作为数字来实现。例如,2月的2
:
q3 = KEBReading.objects.filter(datetime_reading__month = 2).order_by('datetime_reading')
如果您使用signed = True
获取记录,则可以通过以下方式执行:
q3 = KEBReading.objects.filter(signed = True)
如果您想通过提供日期来仅提取上一个日期的记录,您可以使用:
prevdate = KEBReading.objects.filter(datetime_reading = (date - datetime.timedelta(days = 1)))
答案 2 :(得分:0)
q3=KEBReading.objects.filter(...)
将返回一个对象列表。 Django Model
的任何实例都是对象,实例的所有fields
都是该对象的属性。这意味着,您必须使用dot (.)
表示法来使用它们。
像:
item.signed = "signed"
如果您的对象是dictionary
或从字典派生的类,那么您可以使用命名索引,如:
item["signed"] = "signed"
并且在您的情况下,该用法无效(因为您的对象的类型不是基于dictionary
)
您可以拨打update query:
KEBReading.objects.filter(...).update(selected="selected")
或在循环中设置新值然后保存
for item in q3:
item.signed="signed"
q3.save()
但在您的情况下,更新查询是一种更好的方法,因为它执行的数据库调用较少。