0

视图.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()  

如何将字段保存到数据库中?我正在尝试用一个值保存名为“已签名”的字段。如果我这样做q3.save(),它会给出一个错误,因为它是一个查询集。我正在从数据库中进行查询,然后根据结果,想为字段设置一个值并保存它。

  prevdate=KEBReading.objects.filter(datetime_reading__lt=date)

我从数据库中获取的所有行都少于当前日期。但我只想要最新的记录。如果我进入 2012 年 6 月 3 日。wen 我查询我想要的日期小于这个日期,即这个日期之前的日期。sumbody 可以帮忙吗?

4

3 回答 3

0
q3=KEBReading.objects.filter(...)

将返回一个对象列表。a 的任何实例Django Model都是对象,并且所有fields实例都是该对象的属性。这意味着,您必须使用dot (.)符号来使用它们。

喜欢:

item.signed = "signed"

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

item["signed"] = "signed"

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

您可以调用更新查询

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

或在循环中设置新值然后保存

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

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

于 2013-02-28T12:22:22.193 回答
0
q3 = KEBReading.objects.filter(datetime_reading__month=a,
    datetime_reading__year=selected_year)       
for item in q3:
   item.signed = True
   item.save()
于 2013-02-28T12:00:37.450 回答
0

尝试使用更新查询

如果signed布尔字段

q3 = KEBReading.objects.filter(datetime_reading__month = a).filter(datetime_reading__year = selected_year).update(signed = True)

如果是字符域

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)))
于 2013-02-28T12:02:49.347 回答