2

django モデルからクエリを作成することは可能ですか?

私は2つのモデルを持っています:

class Book(models.Model):
    ...
    def copies_available(self):
        pass

class BookCopy(models.Model):
    ...
    book_category = models.ForeignKey(Book, related_name='copies')
    issued_to = models.ForeignKey(EndUser, related_name='issued_books', null=True, blank=True)

そのインスタンスの数copies_available()を返したいBookCopyBookissued_toNone

4

3 に答える 3

2

これはうまくいくはずです:

class Book(models.Model):
    ...
    def copied_available(self):
        return self.copies.filter(issued_to__isnull=True).count()
于 2013-10-17T18:40:27.323 に答える
0

これは数年前に行ったものなので、少し変更されている可能性があります。

BookManager クラスを作成し、そこに機能を配置する必要があります。次に、マネージャを Book モデルのオブジェクト変数に割り当てます。次のようにします。

class BookManager(models.Manager):

    def copied_available(self):

        queryset = BookCopy.objects.filter(book_category=self.id).filter(issued_to is not None)

        return queryset.count()

class Book(models.Model):
    ...
    objects = BookManager()

したがって、テンプレートでは、次のようなことができます。

<p> Copies: {{ thebook.copied_available }}</p>
于 2013-10-17T18:47:36.733 に答える
0

はいlimit_choices_to、ForeignKey に設定するだけです。ドキュメントから:

"このオブジェクトで利用可能な admin または ModelForm の選択を制限するルックアップ引数と値のディクショナリ (クエリの作成を参照)。これを Python の datetime モジュールの関数と共に使用して、オブジェクトの選択を日付で制限します。例:"

limit_choices_to = {'pub_date__lte': datetime.date.today}
于 2013-10-17T18:37:48.293 に答える