2011-07-11 15 views
8
class Author(models.Model): 
    name = models.CharField(max_length=100) 
    age = models.IntegerField() 
    friends = models.ManyToManyField('self', blank=True) 

class Publisher(models.Model): 
    name = models.CharField(max_length=300) 
    num_awards = models.IntegerField() 

class Book(models.Model): 
    isbn = models.CharField(max_length=9) 
    name = models.CharField(max_length=300) 
    pages = models.IntegerField() 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    rating = models.FloatField() 
    authors = models.ManyToManyField(Author) 
    publisher = models.ForeignKey(Publisher) 
    pubdate = models.DateField() 

class Store(models.Model): 
    name = models.CharField(max_length=300) 
    books = models.ManyToManyField(Book) 

मुझे लगता है कि मैं वास्तव में कुछ स्पष्ट याद कर रहा हूँ, लेकिन मैं कैसे में बनाए गए रिकॉर्ड की संख्या के लिए एक गिनती मिलता है में अभिलेखों की संख्या की सरल गिनती इस कई-से-अनेक तालिका authors = models.ManyToManyField(Author)?ManyToMany टेबल

उत्तर

11

बाहर चेक the docs, यह बहुत सरल है:

b = Book.objects.all()[0] 
b.authors.count() 

अद्यतन:

मूल प्रश्न डेटाबेस में लेखक के सभी की एक सूची के लिए पूछ रहा था, की एक सूची के लिए नहीं देख प्रति पुस्तक लेखकों।

Author.objects.count() ## Returns an integer. 
+0

मैं तुमसे वादा करता हूँ मैं पागल की तरह खोज रहा था:

डेटाबेस में लेखकों के सभी की एक सूची प्राप्त करने के लिए। सभी उदाहरण एक फ़िल्टर की गई क्वेरी देते हैं। किसी कारण से, '[0] 'भाग आपके द्वारा एम्बेड किए गए लिंक में कहीं भी दिखाई नहीं देता है। – super9

+0

'[0] 'बस क्वेरीसेट में पहली' पुस्तक 'का चयन करता है। यह कहने जैसा ही है: 'Book.objects.get (pk = 1) '(मान लीजिए कि पहले' बुक' में' 1' की प्राथमिक कुंजी है)। –

+0

तो अगर मैं 'Book.objects.get (pk = 1) करता हूं, तो मुझे अपनी गिनती में' b = Book.objects.all() [0] 'पर एक ही परिणाम मिल जाएगा? – super9

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