2011-09-26 20 views
5

Kitapları ve yazarları temsil eden aşağıdaki modellere sahibim. Tek bir kitap birden fazla yazar olabilir ve bir yazar birden çok kitap yazabilirdi. Bu yüzden iki modeli birbirine bağlamak için Django'nun ManyToManyField türünü kullanıyorum.ManyToManyField Çoklu Modeller Arasındaki İlişkiler

Belki de Django Yöneticisi'ni kullanarak bir Book ekleyebilir ve işlemde bir Author oluşturabilirsiniz. Ancak yeni oluşturduğum Author görüntülendiğinde, Book ile bağlantılı değil. Author örneği ve Book örneği arasındaki ters ilişkiyi açıkça ayarlamalıyım.

Bu sadece böyle mi, yoksa farklı bir şey mi yapıyorum?

Models.py

class Book(models.Model):  
    book_title = models.CharField(max_length=255, blank=False) 
    authors = models.ManyToManyField('Author', blank=True) 

class Author(models.Model): 
    author_first_name = models.CharField(max_length=255, blank=False) 
    author_last_name = models.CharField(max_length=255, blank=False) 
    books = models.ManyToManyField(Book, blank=True) 

cevap

7

ManyToManyField olmadan modeli sınıfı ters ilişki yoluyla diğer ilişkilidir çünkü iki ManyToManyField tanımları gerekmez. Bkz: https://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships

siz iki modeli sınıfları tanımlanmıştır ise: Herhangi Author Mesela a için daha sonra

class Book(models.Model):  
    book_title = models.CharField(max_length=255, blank=False) 
    authors = models.ManyToManyField('Author', blank=True) 

class Author(models.Model): 
    author_first_name = models.CharField(max_length=255, blank=False) 
    author_last_name = models.CharField(max_length=255, blank=False) 

, a.book_set.all() yazar yazdı (veya ortak yazar) kitaptan oluşur.

+0

Ahhh! Bu harika. Bu şekilde çalıştığını bilmiyordum. Çok teşekkürler! – Raj