...Django şablonundan çoktan çoğa "geçiş" tablosunun özelliklerine nasıl erişirim? Django belgelerine
sadece böyle karıştırma ve pizza ve Topingler eşleşen gibi basit çoktan-çok ilişkileri ile uğraşıyoruz, standart bir ManyToManyField tüm ihtiyaç vardır. Ancak, bazen verileri iki model arasındaki ilişkiyle ilişkilendirmeniz gerekebilir. Örneğin, müzisyenlerin ait olduğu müzik gruplarını takip eden bir uygulama örneğini düşünün. Bir kişi ile üye oldukları gruplar arasında çoktan çoğa ilişkisi vardır, bu nedenle bu ilişkiyi temsil etmek için ManyToManyField kullanabilirsiniz. Bununla birlikte, üyeliğin gruba katıldığı tarih gibi, toplamak isteyebileceğiniz üyelik hakkında birçok ayrıntı vardır.
Bu durumlarda, Django çoktan çoğa ilişkiyi yönetmek için kullanılacak modeli belirtmenize izin verir. Daha sonra ara modele ekstra alanlar koyabilirsiniz. Ara model, arabulucu olarak hareket edecek olan modele işaret etmek için tümüyle argüman kullanılarak ManyToManyField ile ilişkilidir. Bizim müzisyen Örneğin, kodu şöyle görünecektir: Şimdi (bu durumda Üyelik,) sizin aracı modelini kullanmak için ManyToManyField kurdunuz o
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
, sen hazır çoktan çoğa ilişkiler oluşturmaya başla. Sen ara modelin örneklerini oluşturarak bunu:
ringo = Person.objects.create(name="Ringo Starr")
paul = Person.objects.create(name="Paul McCartney")
beatles = Group.objects.create(name="The Beatles")
m1 = Membership(person=ringo, group=beatles,
... date_joined=date(1962, 8, 16),
... invite_reason= "Needed a new drummer.")
m1.save()
beatles.members.all()
[<Person: Ringo Starr>]
ringo.group_set.all()
[<Group: The Beatles>]
m2 = Membership.objects.create(person=paul, group=beatles,
... date_joined=date(1960, 8, 1),
... invite_reason= "Wanted to form a band.")
beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
kaynak: http://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany
Sorum şu, ben bu ek niteliklere erişmek için görüşümü ve şablonu kurarım nasıl. Grup sayfam olduğunu ve grup adını görüntülediğimi, üyelik kayıtları üzerinden yinelendiğini ve adlarını ve tarihçelerini görüntülediğimi varsayalım.
Şablona bant nesnesi mi aktarmalıyım? Ya da üyelik nesnelerini bir şekilde geçebilir miyim?
Şablonda döngüleri nasıl oluşturabilirim?
Teşekkürler.
Biraz django docs alıntılar kısaltarak ele alacak. Muhtemelen cevap vermesi muhtemel olan insanlar muhtemelen daha önceden tanışmışlardır ve gerçek soruya bu şekilde dikkat etmek daha kolay olurdu. – cji