2011-07-11 35 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) 

Tôi nghĩ rằng tôi thiếu một số điều thực sự rõ ràng nhưng làm cách nào để đếm số lượng bản ghi được tạo trong bảng nhiều người này tới số authors = models.ManyToManyField(Author)?Số lượng đơn giản của số lượng bản ghi trong bảng ManyToMany

Trả lời

11

Check-out the docs, nó khá đơn giản:

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

Cập nhật:

Câu hỏi ban đầu đã được yêu cầu cho một danh sách của tất cả các tác giả trong cơ sở dữ liệu, chứ không phải tìm kiếm một danh sách các tác giả trên mỗi cuốn sách.

Để có được một danh sách của tất cả các tác giả trong cơ sở dữ liệu:

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

Tôi hứa với bạn tôi đã tìm kiếm như điên. Tất cả các ví dụ đều đưa ra một truy vấn được lọc. Vì một lý do nào đó, phần '[0]' không hiển thị ở bất cứ đâu ngay cả trong liên kết bạn đã nhúng. – super9

+0

'[0]' chỉ đơn giản là chọn 'Sách đầu tiên 'trong bộ truy vấn. Nó giống như câu nói: 'Book.objects.get (pk = 1)' (giả sử 'Book' đầu tiên có khóa chính của' 1'). –

+0

Vì vậy, nếu tôi làm 'Book.objects.get (pk = 1)', tôi sẽ nhận được kết quả tương tự tại 'b = Book.objects.all() [0]' trong số của tôi? – super9

Các vấn đề liên quan