0

一个随机的问题,但我会尽力描述我想要做的事情。我正在构建一个应用程序来管理一组借出的实物资产。

要归还资产,用户访问 /return/1/ 清除用户名、借用日期、归还日期等

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

4

1 回答 1

0

我不是 100% 确定,但我认为这会击中数据库 4 次......

第一个问题是update用于查询集。您正在对主键进行过滤,因此您只能获得 1 个对象。这意味着您应该get像这样使用

laptop = Laptops.objects.get(pk=laptop_pk)

现在您可以使用它从数据库中正确获取对象,修改它并像这样保存它

laptop = Laptops.objects.get(pk=laptop_pk)
laptop.laptop_status = 'In'
laptop.user = ''
...
laptop.save()

这只会命中数据库 1 次。

最后一个问题是您试图将日期设置为空字符串。那是行不通的,因为它需要一个日期对象。您可以做的一件事是修改您的模型,以便日期可以为空,并且数据库接受空值。

class Laptops(models.Model):
    ...
    borrowed_date = models.DateField(null=True, blank=True)
    return_date = models.DateField(null=True, blank=True)

您可以做的另一件事是使用可以访问的最短日期timezone.datetime.min

于 2013-04-02T03:21:13.473 回答