Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in gängige ORM-Operationsbeispiele in Django

Einführung in gängige ORM-Operationsbeispiele in Django

巴扎黑
巴扎黑Original
2017-09-15 10:50:331615Durchsuche

Der folgende Editor bietet Ihnen eine detaillierte Erklärung häufig verwendeter ORM-Operationen in Django. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick auf

Django-Prozess:

1 Erstellen Sie ein Django-Projekt: django-admin startproject projectname

2 Erstellen Sie eine Anwendung: python manage.py startapp app name

3 Erstellen Sie eine Zuordnungsbeziehung zwischen URL und Ansichtsfunktion im Controller (urls.py) (Eins-zu-eins-Korrespondenz)

4 Erstellen Sie eine Ansichtsfunktion, vervollständigen Sie den Logikcode

5 Holen Sie sich das Sammlungsobjekt aus der Datenbank

5 Betten Sie die Datenbankvariablen in die Vorlage zum Rendern ein (Rendermethode)

6 Geben Sie die gerenderte HTML-Seite an den Client zurück

URL: Protokoll+Domänenname+Port+Pfad

Protokoll: http
Domänenname: www.cnblogs. com
Port: 80
Pfad: yuanchenqi/articles/6811632.html
Daten: a=1

Der reguläre Ausdruck in der URL-Konfiguration entspricht dem Pfadteil einer URL

TEMPALTE (Vorlage): HTML-Code + Logiksteuercode

Syntax der Logiksteuerung: {{}} Rendering-Variablenfilter: {{var|method:parameter}}

{% %} Rendering-Tags
{% if %}
{% for %}
{% url %}
{% url %}

Benutzerdefinierter Filter und Simpletag:

(1) Templatetags-Modul in der App erstellen (erforderlich)

(2) Erstellen Sie eine beliebige .py-Datei, z als: my_tags.py

aus Django-Importvorlage
register = template.Library()
@register.filter
def filter_multi(v1,v2):
return v1 * v2

(3) Erstellen Sie eine beliebige .py-Datei, wie zum Beispiel: my_tags.py

Importieren Sie die zuvor erstellte my_tags.py in die HTML-Datei mit dem benutzerdefinierten simple_tag und Filter: {% Load My_Tags %}

(4) Verwenden Sie simple_tag und Filter:

{% Load xxx %} #Erste Zeile
# num= 12
{ { num|filter_multi:2 }} #24

Zusammenfassung:

Filter: can Akzeptieren Sie nur einen Parameter. Sie können jedoch if-Anweisungen wie

verwenden. simpletag: kann mehrere Parameter akzeptieren, Sie können jedoch keine if-Anweisungen wie

verwenden ORM:

Beziehung zwischen Tabellen:

Eins-zu-viele-Fremdschlüsselfeld muss in der Untertabelle (Eins-zu-viele-Tabelle) Fremdschlüssel sein

Many-to-many in Die dritte Tabelle wird durch Hinzufügen eindeutiger Einschränkungen auf der Grundlage von zwei Foreign KEY

Eins-zu-eins-Fremdschlüsselfeldern implementiert.

Verwenden Sie die MySQL-Methode

1 Ändern Sie die Datenbankkonfiguration der Einstellungsdatei

2 Ändern Sie die Treiberkonfiguration in der __init__-Datei

ORM-zu-SQL-Konfiguration

Konfiguration der Protokollierungseinstellungen

Table.object.filter(): Was Sie erhalten, ist ein Sammlungsobjekt wie [obj1, obj2]

Table.object.get(): Was erhalten wird, ist ein Modellobjekt

Eins-zu-viele-Hinzufügen eines Datensatzes:

# Methode 1:

# Book.objects.create(id=1,title="python",publication_date="2017-03-04",price=88.8,publisher_id=1)

#Methode 2

p1=Publisher.objects.get(name="Renmin University Press")
Book.objects.create(id=2,title="python",publication_date="2017-05-04" ,Preis=98,8, Herausgeber=p1)

Erstellen Sie eine Viele-zu-Viele-Beziehung in der Datei models.py

authors=models.ManyToManyField("Author" ) #Many-to-many, wenn die Tabelle in ist. Sie müssen unten Anführungszeichen hinzufügen

Many-to-many-Addition

ManyToMany hat nur eine Möglichkeit zum Hinzufügen :

book.authors.add(*[author1 ,author2])
book.authors.remove(*[author1,author2])

Hinweis: Verstehen Sie book_obj. Herausgeber

book_obj.authors

Selbstgebauter dritter Tisch

Klasse Book2Author(models.Model):
author=models .ForeignKey("Author")
Book= models.ForeignKey ("Book")
# Dann gibt es noch einen anderen Weg:
author_obj=models.Author.objects.filter(id=2)[0]
book_obj =models.Book.objects.filter(id =3)[0]

s=models.Book2Author.objects.create(author_id=1,Book_id=2)
s.save ()
s=models.Book2Author(author=author_obj ,Book_id=1)
s.save()

.value und .value_list betreiben das Buchtabellenbuch

#Das Ergebnis der Verwendung von Wert ist kein Objekt, sondern ein Objekt. Das Ergebnis eines Felds oder Attributs ist ebenfalls querySet

ret1=Book.objects.values('title')
ret1_list = Book.objects.values_list('title')
print('ret1 is : ',ret1) #Das Ergebnis ist: ret1 is :
print(ret1_list) #Das Ergebnis ist die Liste in querySet

Der Unterschied zwischen Aktualisieren und Speichern bei Änderungsvorgängen:

Update setzt nur die angegebenen Felder und Speichern legt alle Felder fest, sodass die Aktualisierung effizienter ist

Abfrage:

Erweiterter Inhalt

# Abfragebezogene API:

# <1>filter(**kwargs): Es enthält Objekte, die den angegebenen Filterbedingungen entsprechen

# <2>all(): Alle Ergebnisse abfragen

# < ;3>get(**kwargs): Gibt Objekte zurück, die den angegebenen Filterbedingungen entsprechen. Es gibt nur ein zurückgegebenes Ergebnis. Wenn mehr als ein Objekt vorhanden ist oder keines, das den Filterbedingungen entspricht, wird ein Fehler ausgegeben.

#-----------Die folgenden Methoden werden alle zum Verarbeiten der Abfrageergebnisse verwendet: wie zum Beispiel Objekte.filter.values()--------

# <4>values(*field): Gibt ein ValueQuerySet zurück – ein spezielles QuerySet. Nach der Ausführung erhalten Sie keine Reihe modellinstanziierter Objekte, sondern eine iterierbare Wörterbuchsequenz

# < 5>exclude(**kwargs): Es enthält Objekte, die nicht den angegebenen Filterbedingungen entsprechen

# <6>order_by(*field): Sortieren Sie die Abfrageergebnisse

# < 7>reverse(): Sortiert die Abfrageergebnisse umgedreht

# <8>distinct(): Doppelte Datensätze aus den zurückgegebenen Ergebnissen entfernen

# <9> ;values_list(*field): Es ist sehr ähnlich zu „values()“. Es gibt eine Tupelsequenz zurück und „values“ gibt eine Wörterbuchsequenz zurück.

# <10>count(): Gibt Übereinstimmungen in der Datenbank zurück. Die Anzahl der Objekte in der Abfrage (QuerySet).

# <11>first(): Gibt den ersten Datensatz zurück

# <12>last(): Gibt den letzten Datensatz zurück

# <13> (): Wenn das QuerySet Daten enthält, gibt es True zurück, andernfalls gibt es False

zurück

Das obige ist der detaillierte Inhalt vonEinführung in gängige ORM-Operationsbeispiele in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn