如何在查询后将字段存储在数据库中



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。如果我查询,我希望日期小于此日期,即在此之前的日期。sumbody有帮助吗?

q3 = KEBReading.objects.filter(datetime_reading__month=a,
    datetime_reading__year=selected_year)       
for item in q3:
   item.signed = True
   item.save()
q3=KEBReading.objects.filter(...)

将返回一个对象列表。Django Model的任何实例都是对象,该实例的所有fields都是该对象的属性。也就是说,您必须使用dot (.)表示法来使用它们。

类似:

item.signed = "signed"

如果您的对象是dictionary或从dictionary派生的类,那么您可以使用命名索引,如:

item["signed"] = "signed"

在您的情况下,该用法是无效的(因为您的对象类型不是基于dictionary的(

您可以调用更新查询:

KEBReading.objects.filter(...).update(selected="selected")

或者在循环中设置新值,然后将其保存为

for item in q3:
   item.signed="signed" 
   q3.save()

但在您的情况下,更新查询是一种更好的方法,因为它执行的数据库调用更少。

尝试使用更新查询:

如果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

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)))

相关内容

  • 没有找到相关文章

最新更新