一个随机的问题,但是我会尽力描述我想要做的事情。我正在构建一个应用程序来管理一组可以借出的实物资产。
要返回资产,用户访问/ 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
答案 0 :(得分: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