32

プロジェクトに適切なクエリを取得するのに苦労しています。これが例または私のモデルです:

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    def __unicode__(self):
        return self.name

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField()

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)

class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()

    def __unicode__(self):
        return self.title

書籍クラスから出版社を取得するにはどうすればよいですか。たとえば、タイトルが「hello」で始まるすべての書籍のすべての出版社を取得したいのですが。

4

1 に答える 1

53

パブリッシャーを取得する場合は、から始める必要がありますPublisher。つまり、Book→Publisherリレーションを逆方向にクエリする必要があります。これは、ドキュメントがそれについて言っていることです:

関係にまたがるルックアップ

関係をスパンするには、目的のフィールドに到達するまで、モデル間で関連するフィールドのフィールド名を二重アンダースコアで区切って使用します。

..。

「逆」の関係を参照するには、モデルの小文字の名前を使用します。

クエリ:

Publisher.objects.filter(book__title__startswith='hello')
于 2013-03-19T18:11:21.887 に答える