Arkadaşlar iyi akşamlar, ben django ile geliştirdiğim uygulamada ManytoMany ilişkiye sahip modellerim üzerinde bir sorgu gerçekleştirmek istiyorum ancak pek başarılı olduğum söylenemez. Aşağıdaki gibi modellerim var,
class Raf(models.Model):
raf_adi = models.CharField(max_length = 50)
class Tur(models.Model):
tur_adi = models.CharField(max_length = 50)
class Kitap(models.Model):
#konu dışı kodlar çıkartılmıştır.
kitap_adi = models.CharField(max_length = 50)
kitap_turu = models.ForeignKey(Tur, on_delete=models.CASCADE)
yazar = models.ManyToManyField(Yazar)
raf = models.ForeignKey(Raf, on_delete = models.CASCADE, blank = True, null = True)
bu modeller veritabanında şöyle alanlar oluşturuyor,
kitap
yazar
raf
kitap_yazar
benim özetle yapmak istediğim şey bir rafta bulunan kitapları yazar isimleriyle birlikte veritabanından çekmek. Bunun için denediğim bir kaç kodu paylaşayım,
def raf_detay(request, raf_id):
#Bu iki kod ile bir rafın bilgilerini ve raf üzerindeki kitap bilgilerini alabiliyorum.
raf = Raf.objects.filter(id = raf_id)
kitaplar = Kitap.objects.filter(raf_id = raf_id)
#ve bu kodlar ile de ilgili rafta bulunan kitaplara ait yazarları
kitap_yazar = []
for kitap in kitaplar:
kitap_yazar.append(Yazar.objects.filter(kitap__id = kitap.id))
ve bunları template içinde bir card ile bir araya getirmeye çalışıyorum, ancak hangi yazarın hangi kitaba ait olduğunu eşleştiremiyorum. Bu noktada 2 sorum olacak,
- Bu izlediğim yol böyle bir senaryo için doğru mudur? Değilse nasıl olması gerektiği konusunda bir örnek paylaşırsanız çok memnun olurum.
- Eğer işe yarar bir yöntemse bunları template de nasıl ilgili kitaplarla eşleştirebilirim?