Ściaga z Django Modele 1 from django.db import models from django.contrib.auth.models import User 4 class Story(models.Model): 5 title = models.charfield(max_length=100, null=false, blank=false) 6 description = models.textfield(null=false, blank=true) created = models.datetimefield(auto_now_add=true) 8 changed = models.datetimefield(auto_now=true) 9 owner = models.foreignkey(user, null=false, blank=false) 10 priority = models.integerfield(choices = [(1, Niski ), 11 (, Sredni ), 1 (, Wysoki )]) 1 14 def unicode (self): 15 return u NewModel: + self.field_1 16 1 class Meta: 18 ordering = ( -priority, title ) 19 verbose_name = Opowiesc 0 verbose_name_plural = Opowiesci Metoda unicode definiuje sposób wyświetlania obiektu w postaci tekstowej. Najcz eściej używane typy pól BooleanField - pole logiczne, True/False CharField - krótkie pole tekstowe max_length (wymagany) maksymalny rozmiar pola; wi ekszość baz danych ogranicza go do 55 znaków DateField - pole zawierajace date auto_now ustawione na True oznacza, że to pole zostanie automatycznie ustawione na aktualny czas przy każdym zapisie obiektu auto_now_add ustawione na True oznacza, że to pole zostanie automatycznie ustawione na aktualny czas w momencie utworzenia obiektu 1
DateTimeField - pole zawierajace date i czas, parametry takie jak DateTime ForeignKey - pole bed ace po l aczeniem z innym modelem (relacja jeden do wielu ) pierwszy parametr (wymagany) model, do którego odwo luje si e to pole ImageField - pole zawierajace obrazek upload_to (wymagany) katalog, w którym fizycznie przechowywane bed a obrazki (wzgle- dem settings.media_root) IntegerField - pole zawierajace liczbe ca lkowita TextField - duże pole tekstowe, bez ograniczenia rozmiaru TimeField - pole zawierajace czas, parametry takie jak DateTimeField parametry wspólne dla wszystkich typów pól blank (domyślnie: True) ustawiony na True oznacza, że pole jest opcjonalne (może być puste) choices pozwala na ograniczenie możliwych wartości pola; powinien zawierać list e par: (wartość, opis) help_text opis, który pojawi si e obok pola na stronie edycji null (domyślnie: True) ustawiony na True oznacza, że jeśli pole jest puste, to w bazie może być zapisane jako NULL unique ustawiony na True oznacza, że wartość pola musi być unikalna w tabeli Klasa Meta Wewn etrzna klasa Meta zawiera dodatkowe informacje o modelu, najcz eściej używane to: ordering domyślny sposób sortowania wpisów; minus przed nazwa pola oznacza sortowanie malejaco verbose name nazwa modelu, do wykorzystania na stronach WWW (np. w interfejsie administracyjnym); domyślnie tworzona na podstawie nazwy klasy verbose name plural nazwa modelu w liczbie mnogiej, do wykorzystania na stronach WWW (np. w interfejsie administracyjnym); domyślnie tworzona na podstawie nazwy klasy przez dodanie s na końcu Interfejs administracyjny W pliku nazwa_aplikacji/admin.py: 1 from gazetr.news.models import Category from django.contrib import admin 4 class CategoryAdmin(admin.ModelAdmin): 5 list_display = ( name, owner ) 6 search_fields = ( name,) 8 admin.site.register(category, CategoryAdmin)
Najcz eściej używane opcje ModelAdmin: list display (lista) Pola widoczne jako kolumny na liście wpisów. list_display = ( pole1, pole ) search fields (lista) Pola używane do wyszukiwania tekstu na liście wpisów. Powinny to być pola tekstowe (CharField, TextField). search_fields = ( pole1, pole ) list filter (lista) Pola używane do filtrowania listy wpisów. Można użyć pól typu BooleanField, CharField, DateField, DateTimeField, IntegerField i ForeignKey. list_filter = ( pole1,) date hierarchy (pole) Pole, z którego skorzysta interfejs do przegladania wpisów wed lug dat. Powinno być typu Date- Field lub DateTimeField. date_hierarchy = created form (klasa formularza) Formularz wykorzystywany przez interfejs administracyjny do dodawania i edycji wpisów. form = MyFormClass fields (lista) Lista pól, które maja być widoczne w edytorze wpisów. Pozwala na ograniczenie możliwości edycji do cześci pól modelu. fields = ( pole1, pole ) fieldsets (lista list s lowników) Definicja uk ladu pól na stronach dodawania i edycji. Zawiera list e grup pól (ang. fieldset). Każda grupa jest zdefiniowana przez par e wartości: nazw e (może być ustawiona na None) s lownik zawierajacy wartości: fields: lista pól, które bed a widoczne w tej grupie classes: lista klas CSS, które zostana dopisane do tej grupy; Django ma wbudowana obs luge klas collapse (grupa domyślnie zamknieta) i wide (rozciagni eta). description: opis, który pojawi sie w górnej cześci grupy
1 fieldsets = ( (None, { fields : ( pole1, pole, pole ) 4 }), 5 ( Opcje zaawansowane, { 6 classes : ( collapse,), fields : ( pole4, pole5 ) 8 }), 9 ) Ten kod definiuje dwie grupy: pierwsza bez nazwy, zawierajac a trzy pola, i druga -- Opcje zaawansowane, ukryta, z kolejnymi dwoma polami. Szablony 1 {{ zmienna }} {% for zmienna in lista_wartosci %} 4 {{ zmienna filtr1:"parametry,filtra" filtr }} 5 {{ zmienna.pole }} 6 {% endfor %} 8 {% if article.image %} 9 {{ article.image.url }} 10 {% endif %} 11 1 {% ifequal zmienna1 zmienna %} 1 zmienna1 i zmienna sa równe! 14 {% endifequal %} 15 16 {% load nazwa_biblioteki %} 1 18 {% block content %} 19 to jest zawartość bloku 0 {% endblock content %} 1 {# komentarz jednolinijkowy #} 4 {% comment %} 5 dluzszy 6 komentarz {% endcomment %} 4
API bazodanowe Manager 1 Article.objects.all() Tworzenie Aplikacji w Django, http://warsztatyit.pl/ # create zapisze obiekt art1 natychmiast 4 Article.objects.create(title="Tytul 1") 5 art1 = Article.objects.get(title="Tytul 1") 6 art1.delete() 8 art, created = Article.objects.get_or_create(title="Tytul ") 9 if created: 10 print "Artykul wlasnie zostal utworzony!" 11 art.content = "Zawartosc" 1 art.save() 1 14 # zmiana niektorych pol bez modyfikacji innych 15 # (bezposrednio wysle UPDATE w SQL) 16 Article.objects.filter(title contains="nowy").update(title="stary") 1 18 # filtrowanie 19 Article.objects.filter(id gt=100, title contains="a") 0 Article.objects.filter(owner username contains="gosc").exclude(...) 1 # pobieranie pojedynczego obiektu Article.objects.get(id gt=100, title contains="a") 4 Article.objects.get(id=100) Rodzaje porównań Najcz eściej używane: 1 # exact: dokladne dopasowanie (domyslne) User.objects.filter(username = "admin") User.objects.filter(username exact = "admin") 4 5 # contains: zawiera podany tekst 6 User.objects.filter(username contains = "admin") 8 # lt: mniejsze, lte: mniejsze lub rowne, gte: wieksze lub rowne, gt: wieksze 9 User.objects.filter(id gt = 10) 10 11 # isnull: wartosc jest NULLem 1 User.objects.filter(first_name isnull = True) 5