1

チェックアウト/チェックインの履歴を追跡するDjangoでチェックアウトシステムを作成するための最良の方法は何ですか?

私のモデルinventory/models.py

from django.db import models

class Groups(models.Model):
    name = models.CharField(max_length=200)

    def __unicode__(self):
        return self.name

class Inventory(models.Model):
    name = models.CharField(max_length=200)
    serial = models.CharField(max_length=200)
    barcode = models.CharField(max_length=200)
    active = models.BooleanField(verbose_name="Active (can be checked out if not out for repair)",blank=True,default=True)
    repair = models.BooleanField(verbose_name="Out for repair?",blank=True)
    group = models.ForeignKey(Groups)

    def __unicode__(self):
        return self.name

チェックアウト/情報を保存する別のモデルが必要になると思いますか?チェックインかチェックアウトかを知るために、最後のものだけを取得する必要があると思いますか?レポートを作成できるように、アイテムの履歴を保持したいと思います。

アイテムの履歴があり、アイテムをチェックインまたはチェックアウトできるかどうかを確認するには、どうすればよいですか?

4

1 に答える 1

1

はい、あなたの質問からチェックアウト/チェックインが何であるかは完全には明らかではありませんが、私の推測では、あなたは次のようなものが欲しいと思います

class Checkout(models.Model)
    item = models.ForeignKey(Inventory)
    user = models.ForeignKey(User)
    checked_out = models.DateTimeField()
    checked_in = models.DateTimeField(null=True)
    ...

次に、アイテムがチェックアウトされるたびにこれらのオブジェクトの1つを作成し、それを更新して、アイテムが再度チェックインされたときのチェックイン日を設定します。

現在のチェックアウトを見つける(または何かがチェックアウトされていないかどうかを判断する)には、次のようなクエリを実行できます。

try:
    checkout = Checkout.objects.get(item=my_item, checked_in=None)
except Checkout.DoesNotExist:
    #item isn't checked out
    checkout = None
于 2013-02-04T20:52:58.563 に答える