首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django从视图中擦除日期字段值

Django从视图中擦除日期字段值
EN

Stack Overflow用户
提问于 2013-04-02 10:39:55
回答 1查看 126关注 0票数 0

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

为了返回资产,用户访问/ return /1/,它会清除用户的姓名、借入日期、归还日期等

view.py

代码语言:javascript
复制
 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

EN

回答 1

Stack Overflow用户

发布于 2013-04-02 11:21:13

我不是100%确定,但我认为它命中数据库4次…

第一个问题是,update旨在用于查询集。您正在对主键进行筛选,因此您只能得到一个对象。这意味着您应该使用get,如下所示

代码语言:javascript
复制
laptop = Laptops.objects.get(pk=laptop_pk)

现在,您可以使用它从数据库中正确获取对象,对其进行修改,然后保存它,如下所示

代码语言:javascript
复制
laptop = Laptops.objects.get(pk=laptop_pk)
laptop.laptop_status = 'In'
laptop.user = ''
...
laptop.save()

它只会命中数据库一次。

最后一个问题是,您试图将日期设置为空字符串。这不会起作用,因为它需要一个date对象。您可以做的一件事是修改您的模型,使日期可以为空,并使数据库接受空值。

代码语言:javascript
复制
class Laptops(models.Model):
    ...
    borrowed_date = models.DateField(null=True, blank=True)
    return_date = models.DateField(null=True, blank=True)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15755167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档