2013-03-19 9 views
17

मैं अपनी परियोजना के लिए सही क्वेरी प्राप्त करने में संघर्ष कर रहा हूं। यहाँ एक उदाहरण या मेरे मॉडल है:Django फ़िल्टर क्वेरी विदेशी कुंजी

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 

कैसे मैं उदाहरण मैं सभी पुस्तकों शीर्षक 'हैलो' के साथ शुरू होती हैं, के सभी प्रकाशक प्राप्त करना चाहते हैं के लिए पुस्तक कक्षा से प्रकाशक मिलता है? धन्यवाद

उत्तर

28

यदि आप प्रकाशक प्राप्त करना चाहते हैं, तो आपको Publisher से शुरू करना होगा। इसका मतलब है कि आपको पुस्तक → प्रकाशक संबंध पीछे की ओर से पूछना है। यहाँ डॉक्स इसके बारे में क्या कहना है: जब तक आप क्षेत्र के लिए मिलता है

Lookups that span relationships

एक रिश्ता अवधि के लिए, बस मॉडल भर में संबंधित क्षेत्रों, डबल अंडरस्कोर द्वारा अलग के क्षेत्र के नाम का उपयोग, आप

चाहते

...

"रिवर्स" रिश्ते को संदर्भित करने के लिए, मॉडल के लोअरकेस नाम का उपयोग करें।

क्वेरी:

Publisher.objects.filter(book__title__startswith='hello') 
+1

यह काम किया ^^ धन्यवाद एक बहुत तुम मेरे समय सीमा ^^ –

+0

बचाया क्या होगा यदि मैं कुछ प्रकाशक द्वारा प्रकाशित सभी पुस्तकों देखना चाहते हो? –

+1

@ अरिंदम रॉयचौधरी: 'Book.objects.filter (publisher__name = 'कुछ')' –

संबंधित मुद्दे