Language:

Gönderen Konu: django yardım sayfası  (Okunma sayısı 1167 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
django yardım sayfası
« : 19 Nisan 2016, 20:11:43 »
Kod: [Seç]
from django.db import models

class Ilac(models.Model):
    isim = models.CharField(max_length=32)
    def __str__(self):
        return self.isim

class EtkenMadde(models.Model):
    isim = models.CharField(max_length=32)
    def __str__(self):
        return self.isim

class Mustahzar(models.Model):
    ilac = models.ForeignKey(Ilac, on_delete=models.CASCADE)
    ekisim = models.CharField(max_length=32, blank=True, null=True)
    etkenmadde = models.ForeignKey(EtkenMadde, on_delete=models.CASCADE)
    doz = models.CommaSeparatedIntegerField(max_length=1000, blank=True, null=True)
    birim = models.CharField('Birim', max_length=2,  blank=True, null=True)
    adet = models.PositiveSmallIntegerField(blank=True, null=True)
    form = models.CharField('Form', max_length=32, blank=True, null=True)
    firma = models.CharField('Firma', max_length=32, blank=True, null=True)
    barkod = models.CharField('Barkod', max_length=13, blank=True, null=True)
    aktif = models.BooleanField(default=True)
    sut = models.TextField(blank=True, null=True)
    prospektus = models.TextField(blank=True, null=True)

    def __str__(self):
        return "%s %s %s %s %s %s" %(str(self.ilac), self.ekisim, self.doz, self.birim, self.adet, self.form)


ilac sınıfı, tüm ilaçları liste halinde gösterebilmek için, EtkenMadde sınıfı da başka bir sayfada etkenmaddelerin tümünü birarada listeleyebilmek için var.
hemen hemen her ilacın birden fazla adeti, formu, dozu var.
her ilacın her formu veya dozunun ayrı ayrı bir etkenmaddesi var ve ekleyebiliyorum fakat; bazı ilaçların 2 hatta daha fazla etkenmaddesi olabiliyor.
örnek :
ilac sınıfı : ASPIRIN
etkenmadde sınıfı : asetilsalisilk asit
mustahzarlar :
   - ASPIRIN 100 mg 20 tablet
   - ASPIRIN 500 mg 30 tablet

bunların etkenmadde olarak yalnızca 'asetilsalisilik asit' içerir

   - ASPIRIN Plus C --> asetilsalisilk asit 400 mg, vitamin C 240 mg
   - ASPIRIN Forte tablet --> asetilsalisilik asit 500 mg, kafein 50 mg

bu mustahzarlar da birden fazla etkenmadde içerir.
'plus c' ve 'forte' yi ekisim ile ekleyebiliyorum fakat; bu mustahzarlara etkenmaddeleri, dozları ve birimleri topluca ekleyemiyorum.
dolayısıyla döngü kurup sayfada etkenmaddelerin tamamını dozları ve birimleriyle birlikte gösteremiyorum.  yalnızca bir etkenmadde görünüyor.
Mustahzardaki ForeignKey ifadesini ManyToMany yaparak her bir mustahzara birden fazla etkenmadde seçmeyi denedim lakin; doz ve birim eksik kalıyor.
doz ve birimi de ayrı bir sınıfta tanımlayıp ManyToMany yapsam diye düşündüm ama bu sefer de hangi etkenmadde hangi doz ve birimi baz alacak.

bilmem anlatabildim mi?
üstatlar ne önerirler acaba?
« Son Düzenleme: 07 Haziran 2016, 23:06:18 Gönderen: merkapto »

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: django yardım edin lütfen
« Yanıtla #1 : 29 Mayıs 2016, 18:23:14 »
çok okuyan var ama cevap veren çıkmadı hiç  :'( neyseki uzun uğraşlar sonunda yapabildim istediğim şeyi.  8)
merak edenler için açıklayayım kabaca. etkenmadde, doz ve birimi ayrı bir modelde tanımladım. admin panelinde 'inline' ile aynı ilaca birden fazla etkenmadde ekleyebildim. template kısmında ise 'modelAdi_set.all' ile döngüyü kurabildim.
ne yaptığımı görmek isteyenler 46.197.184.42 ip adresine bakabilir. şimdilik domain, hosting almadım. raspberry pi'den yayın yapıyorum. django ile hobi amaçlı birşeyler yapmak isteyenler varsa fikir alışverişinde bulunabiliriz.
cümleten saygılar!..

mthnzbk

  • Geliştirici

  • Çevrimdışı
  • *****

  • 73
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
    • MetehanUs
Ynt: django yardım edin lütfen
« Yanıtla #2 : 29 Mayıs 2016, 19:53:02 »
 on_delete=models.CASCADE bu tam olarak ne işe yarıyor?

merkapto

  • Yeni

  • Çevrimdışı
  • *

  • 13
  • Cinsiyet
    Bay

    Bay
    • Profili Görüntüle
Ynt: django yardım edin lütfen
« Yanıtla #3 : 30 Mayıs 2016, 01:28:52 »
yanlış bilgi vermek istemem ama bildiğim kadarıyla anlatmaya çalışayım.
diyelim ki 2 modelimiz var. alttaki modelimizi ForeignKey ile üsttekine ilişkilendirdik. üstteki modelden herhangi bir nesne sildiğimizde onunla ilişkilendirilmiş alttaki tüm nesneler de silinecektir.

örnek :

Kod: [Seç]
class Popcu(models.Model):
    popcu_adi = models.CharField(...)

class Sarkilar(models.Model):
    popcu = models.ForeignKey(Popcu, on_delete=models.CASCADE)
    sarki_adi = models.CharField(...)
    sarki_sozleri = models.TextField(...)

yüzlerce popcu ve her popcunun da onlarca şarkısı olsun. eğer bir popcu adını veritabanından silersek ona ait olan şarkilar da silinicektir.

benim dilim bu kadar döndü. daha iyi açıklayabilecek varsa lütfen bilgisini bizden mahrum etmesin.
cümleten saygılar!..

 

Yukarı Çık & Back to Up