instrumente-Django dfk amânată chei străine pentru Django. Chei străine amânate sunt conceptual similar cu chei externe generice, cu excepția faptului că sunt rezolvate într-o adevărată cheie străină în timpul rulării, și cauza chei externe corespunzătoare care urmează să fie creat în baza de date.
Acest pachet vă permite să faceți două lucruri:
* Constatarea faptului că domeniu cheie externă model este "deferrable", și ar trebui să fie mai târziu repointed
* Repoint domenii cheie străine un model existent, chiar dacă acest model nu este django-dfk conștient.
Tu ar trebui să efectueze urmă cu prudență - consideră un proces similar cu maimuta-patching!
Pachetul-django dfk este software alfa, și nu este dispun-complet. & Nbsp; Consultați secțiunea TODO de ceea ce este pe lista.
Instalare :
Instalați django-dfk folosind preferată managerul de pachete Python. Utilizarea virtualenv asemenea, este recomandat:
Pip instala django-dfk
Utilizare :
Arătând o singură cheie externă
Să presupunem că doriți să reinventeze roata, și de a dezvolta o aplicație comentând. Modelul comenteaza ar putea arata ca acest lucru, în mycomments.models:
de la DFK DeferredForeignKey import
clasa Comentariu (models.Model):
& Nbsp; comentator = models.ForeignKey ('auth.User ")
& Nbsp; conținut = DeferredForeignKey ()
& Nbsp; corp = models.TextField ()
Acum, ai venit pentru a integra această aplicație cu sistemul dvs. blog (care, după cum tu ești pasionat de reinventare roată, te-ai scris, de asemenea,). Iată blog / models.py:
din punct de import dfk
din mycomments.models import Comentariu
clasa blogpost (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 100)
& Nbsp; slug = models.SlugField ()
& Nbsp; corp = models.TextField ()
litera (Comentariu, "conținut", blogpost)
Apelul la punct va înlocui pe DeferredForeignKey Comentariu cu o cheie externă a blogpost.
de indicare poate chei externe dintr-o dată
Când scrieți modele care folosesc chei străine amânat, poate fi necesar să declare că un număr ar trebui să punct la același "tip" a obiectului. Să spunem că a avut fluaj domeniul de aplicare sălbatice, și aplicația comentarea nevoie de capacitatea de a asocia imagini cu un post pe blog. Astfel încât să editați models.py comenteaza app, astfel se pare ca aceasta:
de la DFK DeferredForeignKey import
clasa Comentariu (models.Model):
& Nbsp; comentator = models.ForeignKey ('auth.User ")
& Nbsp; conținut = DeferredForeignKey (name = "Conținut")
& Nbsp; corp = models.TextField ()
Clasa de imagine (models.Model):
& Nbsp; imaginii = models.ImageField ()
& Nbsp; conținut = DeferredForeignKey (name = "Conținut")
Aceasta exprimă faptul că atât comentarii și imagini trebuie să indice același tip de model. Acest lucru este realizat cu funcția point_named:
de la DFK point_named import
point_named ("blog", "Conținut", blogpost)
Acum, toate instanțele DeferredForeignKey în aplicația blog care sunt numite de conținut vor fi înlocuite cu chei externe reale blogpost.
Argumente cheile străine generate
Când declararea o cheie străină amânată, puteți specifica argumente suplimentare de cuvinte cheie. În afară de nume, aceasta va fi trecut pe la Verbatim cheia externă finală.
De asemenea, este posibil să treacă argumente cuvinte cheie arbitrare în apeluri la punct sau point_named. Acestea vor fi transmise către cheia externă finală. În cazul în care argumentele sunt prezente atât în definiția DFK și în punctul / apel point_named, argumentele de acesta din urmă va avea prioritate.
Mulțumiri
Datorită ISM Fantasy Games Ltd. pentru sponsorizarea acestui pachet
Ce este nou în această versiune:.
- Fix o problemă în cazul în care cache obiect legate pe Opțiuni _meta clase modele "nu au fost repopulat pe un repoint. Aceasta a condus la probleme în cazul în care de filtrare pe un model de părinte legat de un copil folosind o cheie externă amânat ar putea eșua dacă DFK fost (re) a arătat, după faza inițială a modelului de încărcare a avut deja loc.
Ce este nou în versiunea 0.0.4:
- Includeți o MANIFEST.in pentru a asigura documente sunt ambalate .
Ce este nou în versiunea 0.0.2:
- Fix eroare inevitabilă ambalaje
Cerințe :
- Django
- Python
Comentariile nu a fost găsit