Değerli arkadaşlar, django ile bir proje yapıyorum ancak bir noktada takıldım. Elimde personel listesi var:
Ay (ForeignKey liste → Ör: Ocak, Şubat, Mart)
Personel adı (ForeignKey liste → Ör: Ali Kasımoğlu)
Yemek adedi (IntegerField → Ör: 5)
ForeignKey den anlaşılacağı üzere ay ve personeller için ayrı modeller mevcut.
-------------------model.py (defter)---------------------
class AyDonemi(models.Model):
AYLAR_CHOICE = (("Ocak", "Ocak"),
("Şubat", "Şubat"),
("Mart", "Mart"),
("Nisan", "Nisan"),
("Mayıs", "Mayıs"),
("Haziran", "Haziran"),
("Temmuz", "Temmuz"),
("Ağustos", "Ağustos"),
("Eylül", "Eylül"),
("Ekim", "Ekim"),
("Kasım", "Kasım"),
("Aralık", "Aralık"),)
yil = models.ForeignKey("iase.Donem", on_delete=models.CASCADE)
ay = models.CharField("Dönem Ayı", max_length=50, choices=AYLAR_CHOICE)
def __str__(self):
import locale
locale.setlocale(locale.LC_TIME, "tr_TR")
return self.ay + " " + str(self.yil)
class Meta:
ordering = ["id"]
verbose_name_plural = "Ay Ekle"
verbose_name = "Ay"
-------------------model.py (iase)---------------------
class Personeller(models.Model):
durum = models.BooleanField("Aktif mi?", default=True)
personelismi = models.CharField("Adı", max_length=30)
personelsoyadi = models.CharField("Soyadı", max_length=40)
def __str__(self):
return self.personelismi + " " + self.personelsoyadi
class Meta:
verbose_name_plural = "Personeller"
verbose_name = "Personel"
class YemekYemeAdetleri(models.Model):
ay = models.ForeignKey(AyDonemi, on_delete=models.CASCADE)
personel = models.ForeignKey(Personeller, on_delete=models.CASCADE)
yemekadedi = models.IntegerField("Yemek adedi", validators=[MinValueValidator(0)], default=0)
def __str__(self):
return self.personel
Formsetler sayesinde personel adedi kadar formu yazdırabiliyorum. Ancak bu istediğim sonuç değil.
-----------------forms.py-------------------
class PersonelYemekAdetleriForm(forms.ModelForm):
class Meta:
model = YemekYemeAdetleri
fields = "__all__"
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
-----------------forms.py-------------------
def modelformset_view(request):
personeller = Personeller.objects.all()
template_name = 'personel-yemek-adetleri.html'
form = PersonelYemekAdetleriForm(request.GET or None)
if form.is_valid():
form.save()
return redirect('iase:personel-yemek-adetleri')
return render(request, template_name, {
'form': form,
"personeller": personeller
})
Ben belirli ay için, personellere yemek adedi eklemek istiyorum. Yani ayı seçip, tüm personel listesi formu isimler otomatik yazılı olacak şekilde liste halinde adetler default yemek adedi olarak 0 olacak şekilde listelensin istiyorum.
Bu konuda fikir verebilecek var mı?