0

少しランダムな質問ですが、私が何をしようとしているのかを説明するために最善を尽くします。貸し出される一連の物理資産を管理するアプリを構築しています。

アセットを返却するには、ユーザーは /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

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回しかヒットしません。

最後の問題は、日付を空の文字列に設定しようとしていることです。日付オブジェクトが必要なため、これは機能しません。できることの 1 つは、モデルを変更して日付を空白にできるようにし、データベースが null 値を受け入れるようにすることです。

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 に答える