PDA

Pogčedajte punu verziju : Django i nasleđivanje klasa u modelu


jablan
15. 08. 2006., 14:01
Je l' neko radio sa Djangom ovde?

Da li i kako funkcioniše nasleđivanje klasa u modelu? Ja sam nešto probao, pa nije radilo kako treba (nasleđene klase nisu generisale spoljni ključ na tabelu osnovne klase u bazi). Takođe, nije ferceralo u samoj aplikaciji. Bio sam prinuđen da radim good ol' copy-paste... :(

Alef
17. 08. 2006., 21:59
Masleđivanje modela još uvek nije implementirano. Upravo se radi na tome.

Pogledaj: ModelInheritance (http://code.djangoproject.com/wiki/ModelInheritance)

Petar Marić
17. 08. 2006., 23:00
Alef je u pravu, mada trenutno postoji hack u zavisnosti od toga šta želiš da postigneš:
1. Za "nasleđivanje" (suštinski proširenje) django.contrib.auth.models.User u svom settings modulu definiši promenljivu AUTH_PROFILE_MODULE na projekat.app.SiteProfile i onda koristiš User.get_profile() kada želiš da dobaviše dodatne informacije

2. Za ostale slučajeve koristi OneToOneField.

PS: Izvini Jablane što ti nisam ranije odgovorio, nisam primetio ovu temu :1074:

misk0
18. 08. 2006., 17:16
Da ne otvaram novu temu .. sinoc mi se nesto nije spavalo, pa odlucim (nakon svih silnih prica na ovom forumu) da instaliram i vidim sta je Django. Iskreno, sa python-om nemam nikakvo iskustvo, nit sam kad gledao kod - nista i to me do sad odbijalo (ono, novi jezik, sta meni to treba bla bla bla.. ) I instaliram i krenem po dokumentaciji - onih par primjera - odusevljen. Sve super, mislim, kao da koristis neki opisni jezik gdje kazes sta i kako zelis i on se postara za sve to generisanje. U sustini 2 sata igranja i poprilicno pozitivni utisci.
Sad me interesuje dojam ljudi koji to koriste malo duze i koji mozda imaju komercijalnih projekata iza sebe :
- koliko je to stvarno kvalitetno rjesenje za komercijalne sajtove? Mislim, vidim da se tonu default postavki moze override-ovati i to mi djeluje pozitivno, ali da li je stvarno tako buduci da sam ja zagrebao samo po povrsini?
- Da li cu doci u situaciju kad nesto jednostavno nece biti 'izvodljivo' na toj platformi? Obecas ljudima kule i gradove (klijentima) i onda se zapetljas ko pile u kucine.
- Koliki je user-community i koliko tesko se rjesavaju problemi 'ispod haube' tj prepravke koje izlaze iz standardnih mogucnosti?

Zainteresovalo me poprilicno i bio bih spreman da odvojim vrijeme da ga upoznam bolje, ali bih ipak to radio zbog eventualne komercijalne primjene a ne zabave i dokazivanja radi.. i da ... koliko je stvarno poznavanje python-a neophodno?

Alef
18. 08. 2006., 18:38
U principu, možeš da uradiš šta god ti padne na pamet, a ako ti nešto od njegovih alata i biblioteka zasmeta u tome, jednostavno ga zaobiđi i nemoj ga koristiti.
U suštini imaš 3 komponente koje čine Django Djangom:

1. URL maper
2. ORM
3. Template jezik

Sve ostalo što dolazi uz Django su moduli napravljeni na bazi ove 3 komponente i ne moraš ih koristiti. Čak i od te 3, obavezan si da koristiš samo prvu, tj. mapiranje URL-ova. Ali je ono jedno od najfleksibilnijih koje sam video, tako da sumnjam da ćeš ikada imati problema sa njim. Umesto ORM-a uvek možeš da koristiš klasične SQL upite ili čak da koristiš neki drugi ORM koji ti odgovara, a ista priča važi i za Template-e. Samo što u tom slučaju nećeš moći da koristiš neke stvari koje dolaze sa svim tim u paketu.

Dobre stvari si verovatno uvideo i sam, tako da o njima nema neke potrebe pričati... Ja ću reći samo par loših stvari (od kojih se na većini već radi):

1. Python hosting-a nema baš mnogo, pogotovo onih koji podržavaju Django. Pa ako tvoj klient već ima hosting negde, a njegov hosting ne pordžava Django...
2. Sistem autentikacije još uvek nije baš najsrećnije razrešen i ne podržava HTTP autentikaciju definisanu u rfc2616 (http://isi.edu/in-notes/rfc2616.txt), već samo pomoću Cookie-ja (neka me neko ispravi ako grešim).
3. ORM ne podržava kompozitne primarne ključeve (što dovodi do poteškoća u integraciji sa postojećim bazama podataka).

Trenutno ne mogu da se setim više ničeg što je meni zasmetalo u radu...

No da rezimiram... Možeš da uradiš sve što ti padne na pamet, ali za neke stvari ćeš morati možda da se spustiš na malo niži nivo...

jablan
19. 08. 2006., 09:19
Još jedno pitanjce: stekao sam utisak da je onaj njegov admin interfejs prilično neupotrebljiv, osim za unošenje početnih vrednosti u bazu, tokom razvoja. Jesam li u pravu?

Alef
19. 08. 2006., 14:54
Nisi. Admin interface je jako fleksibilan pa možeš da ga podesiš prema svojim potrebama, tako da ti bude integralni deo aplikacije. U Ellington (http://www.ellingtoncms.com/)-u su uradili upravo to.

nesh
28. 10. 2006., 12:53
Odavno me nije bilo ovde, tako da "malo" kasnim ;)

Da li i kako funkcioniše nasle?ivanje klasa u modelu? Ja sam nešto probao, pa nije radilo kako treba (nasle?ene klase nisu generisale spoljni klju? na tabelu osnovne klase u bazi). Tako?e, nije ferceralo u samoj aplikaciji. Bio sam prinu?en da radim good ol' copy-paste...

Za sada nikako, ali se radi na tome.

Ima nacina da se nesto izvede preko menjanja klasa u letu (radio) ali u vecini slucajeva to je veca muka nego korist. Ja za sada koristim OneToOne relacije i namenski napravljene admin form-ove.

koliko je to stvarno kvalitetno rjesenje za komercijalne sajtove? Mislim, vidim da se tonu default postavki moze override-ovati i to mi djeluje pozitivno, ali da li je stvarno tako buduci da sam ja zagrebao samo po povrsini?

Mislim da se do sada pokazao kao vrlo stabilno i brzo resenje za vecinu primena. Skoro sve je moguce zameniti necim drugim (osim, kao sto Alef rece, url mappera).

Da li cu doci u situaciju kad nesto jednostavno nece biti 'izvodljivo' na toj platformi? Obecas ljudima kule i gradove (klijentima) i onda se zapetljas ko pile u kucine.

Sve sto nije izvodljivo, za sada, su kompozitni primarni kljucevi a i to bi trebalo da se resi kad se kao (dodatni) ORM doda i sqlalchemy. Takodje, trenutno, ne podrzava rad sa vise baza podataka (radi se na tome) i prava pristupa po za pojedinacne upise u tabelu (i na tome se radi).

Koliki je user-community i koliko tesko se rjesavaju problemi 'ispod haube' tj prepravke koje izlaze iz standardnih mogucnosti?

Brojanje usera je vrlo nezahvalan posao ;)

Dosta projekata koji su uradjeni u django-u su takodje open source tako da uz malo pretrage moze da se nadje goomila primera.

Prepravke ispod haube, ...., xmmmm, posle 0.95 nisam imao potrebe da to radim, ako i dodje do toga to je obicno ispravka nekog bug-a.

i da ... koliko je stvarno poznavanje python-a neophodno?

Xmmmm, za osnovno koriscenje ne veliko, ali ako nameravas da radis stvari za koje ne postoje gotova resenja preporucujem advanced level poznavanje python-a, u stvari to uvek preporucujem svima ;).

1. Python hosting-a nema baš mnogo, pogotovo onih koji podržavaju Django. Pa ako tvoj klient ve? ima hosting negde, a njegov hosting ne pordžava Django...

Nikada mi nece biti jasni provajderi koji trebaju da samo daju shell nalog (ionako, po mom misljenju, obavezan deo bilo kog hostiga) i da podese FastCGI protokol kao najjednostavniju varijantu ne samo za django, nego i za ruby & co. Ako to ne zele da urade .... uvek ima ko hoce, a ako ne -- VPS vise nije tako skup ;)

2. Sistem autentikacije još uvek nije baš najsre?nije razrešen i ne podržava HTTP autentikaciju definisanu u rfc2616, ve? samo pomo?u Cookie-ja (neka me neko ispravi ako grešim).

Ovaj sto dolazi je dovoljan za vecinu slucajeva, kome treba ozbiljniji sistem moze da ga sam implementira (http://www.djangoproject.com/documentation/authentication/#other-authentication-sources).

A i sama autentikacija je najvise vezana za admin interfejs, nista te ne sprecava da definises neki drugi sistem van toga.

Još jedno pitanjce: stekao sam utisak da je onaj njegov admin interfejs prili?no neupotrebljiv, osim za unošenje po?etnih vrednosti u bazu, tokom razvoja. Jesam li u pravu?

Vrlo je flekibilan ali i to ima svojih granica. Kada se dodje do form-ova koji uticu na vise od jedne tabele tu nema pomoci -- mora da se pravi rucno.