这是一个随机的问题,但我会尽我最大的努力来描述我想要做的事情。我正在构建一个应用程序来管理一组借出的实物资产。
为了返回资产,用户访问/ return /1/,它会清除用户的姓名、借入日期、归还日期等
view.py
def returnlaptop(request, laptop_pk):
Laptops.objects.filter(pk=laptop_pk).update(laptop_status='In')
Laptops.objects.filter(pk=laptop_pk).update(user='')
Laptops.objects.filter(pk=laptop_pk).update(borrowed_date='')
Laptops.objects.filter(pk=laptop_pk).update(return_date='')
return HttpResponseRedirect('/')除了我尝试更新models.datefield中的值之外,这种方法工作得很好
u"‘’值的日期格式无效。它必须为YYYY-MM-DD格式。“
有没有什么办法解决这个问题呢?还是说我完全走错了路?
干杯Xcom
发布于 2013-04-02 11:21:13
我不是100%确定,但我认为它命中数据库4次…
第一个问题是,update旨在用于查询集。您正在对主键进行筛选,因此您只能得到一个对象。这意味着您应该使用get,如下所示
laptop = Laptops.objects.get(pk=laptop_pk)现在,您可以使用它从数据库中正确获取对象,对其进行修改,然后保存它,如下所示
laptop = Laptops.objects.get(pk=laptop_pk)
laptop.laptop_status = 'In'
laptop.user = ''
...
laptop.save()它只会命中数据库一次。
最后一个问题是,您试图将日期设置为空字符串。这不会起作用,因为它需要一个date对象。您可以做的一件事是修改您的模型,使日期可以为空,并使数据库接受空值。
class Laptops(models.Model):
...
borrowed_date = models.DateField(null=True, blank=True)
return_date = models.DateField(null=True, blank=True)您可以做的另一件事是使用可通过timezone.datetime.min访问的最小日期
https://stackoverflow.com/questions/15755167
复制相似问题