(Hinweis) Dieser Artikel ist in Wai-Notation. In Bezug auf Herrn Yametaro @ Yametaro.
Wai "Ich mache eine Django-App als Hobby Nyaga" Wai "Sie können eine Tabelle erstellen, indem Sie einfach ein Modell schreiben." Wai "Django ist hungrig nach einem Management-Bildschirm!"
Wai "Einfache externe Tasten einstellen" Wai "Zum Beispiel ist es besser, die Tabelle für Spielerdaten und Spielerergebnisse zu trennen [^ 1]." [^ 1]: Es sieht so aus, als ob du es nicht brauchst, wenn du nur hier schaust, aber ich benutze es woanders ...
Players
id | year | name | position |
---|---|---|---|
1 | 2019 | Tanaka | Krug |
2 | 2019 | Suzuki | Erster Baseman |
3 | 2020 | Takahashi | Außenfeldspieler |
4 | 2020 | Yamada | zweiter Baseman |
FielderTotalResults
id | player_id | at_bat | hit | homerun | Abkürzung |
---|---|---|---|---|---|
1 | 1 | 4 | 1 | 1 | ・ ・ ・ |
2 | 2 | 3 | 3 | 0 | ・ ・ ・ |
3 | 3 | 5 | 2 | 1 | ・ ・ ・ |
4 | 4 | 4 | 1 | 0 | ・ ・ ・ |
Wai "Die player_id
von Fielder Total Results ist ein externer Schlüssel"
Wai "Es entspricht der" ID "des Spielertisches."
Wai "In diesem Beispiel ist FieldeTotalResults ID 1 Tanaka und 2 Datensätze sind Suzukis Noten." Wai "Es ist klar, dass 3 Takahashi und 4 Yamada ist."
Wai "Die Fielder Total Results-Tabelle ist das Ergebnis der Summe der Ergebnisse für jeden Spieler." Wai "Ich möchte das Ergebnis mit Spielern kombinieren und auf dem Bildschirm anzeigen."
year | name | position | at_bat | hit | homerun | Abkürzung |
---|---|---|---|---|---|---|
2019 | Tanaka | Krug | 4 | 1 | 1 | ・ ・ ・ |
2019 | Suzuki | Erster Baseman | 3 | 3 | 0 | ・ ・ ・ |
2020 | Takahashi | Außenfeldspieler | 5 | 2 | 1 | ・ ・ ・ |
2020 | Yamada | zweiter Baseman | 4 | 1 | 0 | ・ ・ ・ |
Wai "So sieht es auf dem Bild aus" Wai "Ist es nicht möglich zu schreiben, dass die" ID "der Spieler und die" Spieler-ID "der Fielder-Gesamtergebnisse übereinstimmen?" Wai "Zum Beispiel, wenn Sie Suzukis Spielerinformationen und Noten kombinieren möchten."
from django.db import models
from eikan.models import Players, FielderTotalResults
p = Players.objects.get(pk=2)
f = FielderTotalResults.objects.get(player_id=p.id)
Wai "Hmm? Dies ist nur der gleiche Spielerrekord an jedem Tisch!" Wai "Ich möchte es kombinieren und als eine Daten an die Vorlage übergeben." Wai "Hmm, selbst wenn Sie sich das offizielle Dokument ansehen, gibt es keine Beschreibung von JOIN." Wai "In einem solchen Fall bekommen Sie es separat und machen etwas mit Vorlage?"
Tochter (** 2 Jahre alt **) [^ 2] "Papa! Wenn du einen Kindertisch mit Django bekommst" [^ 2]: Es existiert wirklich Tochter "Ich habe es bereits erworben, als ich INNER mit dem Elterntisch verbunden war."
Wai "Was !?" Wai "(Im Alter von zwei Jahren verstehe ich Django bereits besser als Wai ...!?)"
Wai "Tochter, woher wusstest du das?" Tochter "Ich erinnere mich, wie ich mit meinen Freunden im Kindergarten gespielt habe"
Wai "(Kann der Kindergarten in Django gespielt werden ...?)" Wai "(Ich wusste es nicht, weil Wai in den Kindergarten ging ...)"
Wai "Aber meine Tochter, bist du wirklich mit dem Elterntisch verbunden?" Wai "Wenn du" f.name "schreibst" Wai "Tu das nicht, du wirst wütend."
Tochter "Wenn Sie ein Vater sind, sind Sie eine manuelle Person" Tochter "In einem solchen Fall bekommen Sie zuerst die Aufzeichnung des Kindertisches, oder?"
f = FielderTotalResults.objects.get(player_id=2)
Tochter "In diesem Zustand können Sie den Wert abrufen, wenn Sie" untergeordnete Tabelle. Externer Schlüssel. Spaltenname der übergeordneten Tabelle "schreiben.
f.player_id.name
>>>Suzuki
Wai "Ehrlich! (Manueller Mensch ...?)"
Tochter "Wenn Sie auf die gleiche Weise mit Vorlage schreiben"
Tochter "Sie können die Spaltenwerte der übergeordneten Tabelle verwenden, ohne die übergeordnete Tabelle übergeben zu müssen."
Tochter "Wenn Eltern-> Kinder-> Enkelkinder eine Beziehung haben"
Tochter " Enkel Tabelle. Kind externen Schlüssel. Eltern externen Schlüssel. Eltern Element
"
Tochter "Ich kann schreiben"
Wai "Wow ... es ist unglaublich ..." Wai "Ich kann nirgendwo mitmachen, aber Django kann einfach mitmachen."
Tochter "Papa wird von niemandem referenziert" Wai "Se, Sayana ..." Wai "(Was für ein zerstörerisches 2-jähriges Kind ...)"
** Unten nach Kommentaren hinzugefügt **
Wai "Endlich fertig!" Wai "Ich wurde verschont, während ich schlief, also konnte ich nur 8 Stunden schlafen!"
Yome (ich schlafe genug, oder?)
Wai "Ich werde es Heroku mit einer Probe geben" Wai "Nun, Inhalt ist Inhalt Ich benutze es nur für Wai!"
Tochter "Ich habe es geschafft" Tochter "Ich denke, das ist eine große Sache" Tochter "Das ist Bildung"
Wai "Fett !?" Wai (Unter Druck wie der ehemalige Direktor des Kansai-Baseballteams ...!) Wai "Tochter, denkst du, dass der Wert für das Stehlen in der heutigen Zeit nicht so hoch ist?"
Tochter "Papa, rede über Django, nicht über Sabermetrics." Tochter "Egal wie viel Sie im Zustand von INNER JOIN bekommen können" Tochter "Jedes Mal, wenn ich versuche, den Wert im aktuellen Schreibstil zu verwenden" Tochter "Viele Anfragen werden gestellt und es wird sehr schwer" Tochter "Sogenanntes N + 1 Problem" Tochter "Tatsächlich stellt derjenige, den Dad für Heroku eingesetzt hat, auch viele Fragen."
Wai "Ich dachte, es wäre schwer, aber ich frage mich, ob es so ist ..." Wai "Woher wusstest du, dass meine Tochter viele Fragen hat?"
Tochter "Wenn ich die Django-Debug-Symbolleiste verwende, wird die ausgegebene Abfrage angezeigt." Tochter "Wenn Sie googeln, können Sie leicht verstehen, wie man es benutzt, also werde ich es weglassen." Tochter "Die Abfrage von Dads App sieht so aus"
Seitenname | Anzahl der Abfragen | Verarbeitungszeit(ms) |
---|---|---|
Aktuelles Team | 48 | 959 |
Teamliste | 7 | 115 |
Teamdetails | 324 | 4576 |
Liste der Feldspieler | 43 | 770 |
Liste der Krüge | 15 | 416 |
Krug Details | 76 | 1426 |
Batter Details | 66 | 1261 |
Übereinstimmungsliste | 29 | 453 |
Spieldetails | 20 | 345 |
Wai "Weil Teamdetails aus verschiedenen Tabellen stammen." Wai "Es ist wirklich schwer" Wai "Wenn das leichter wird, tut es mir leid."
Tochter "Wenn Sie Aufzeichnungen erhalten und verarbeiten möchten, die an verschiedenen Orten verwandt sind" Tochter "wie es ein Kommentar war" Tochter "Mit select_related () können Sie die Ausgabe nutzloser Abfragen beenden."
f = FielderTotalResults.objects.select_related('player_id').get(player_id=2)
f.player_id.name
>>>Suzuki
Tochter "Es ist so als eine Art zu schreiben" Tochter "Auf diese Weise, egal wie oft Sie" f.player_id.name "verwenden." Tochter "Die Abfrage wird nur einmal ausgegeben"
Wai "Wow ... es ist unglaublich ..." Wai "Dann werde ich alles reparieren, was vorerst gilt."
Wai "Es wird leichter!" Wai "Es ist sehr effektiv, nur select_related () zu verwenden." Wai "Überprüfen Sie mit django-debug-toolbar" Wai "Einfache Überprüfung der Gesamtverarbeitung" Wai "Dies ist das Ergebnis einer umfassenden Überholung."
Seitenname | Anzahl der Abfragen(Bisherige) | Anzahl der Abfragen(Rückseite) | Verarbeitungszeit(Bisherige)(ms) | Verarbeitungszeit(Rückseite)(ms) |
---|---|---|---|---|
Aktuelles Team | 48 | 7 | 959 | 183 |
Teamliste | 7 | 3 | 115 | 75 |
Teamdetails | 324 | 15 | 4576 | 110 |
Liste der Feldspieler | 43 | 3 | 770 | 92 |
Batter Details | 66 | 6 | 1261 | 212 |
Liste der Krüge | 15 | 3 | 416 | 71 |
Krug Details | 76 | 12 | 1426 | 137 |
Übereinstimmungsliste | 29 | 3 | 453 | 1 |
Spieldetails | 20 | 6 | 345 | 2 |
Wai "Ich habe es behoben, damit ich nicht so viele Anfragen wie möglich stelle." Wai "Egal wo Sie es anzeigen, es ist knusprig!" Wai "Es ist offensichtlich, wenn man es vergleicht!" Wai "Und selbst wenn Sie weitere Daten hinzufügen" Wai "Die Anzahl der Anfragen hat nicht viel zugenommen." Wai "Wenn Sie neugierig sind, berühren Sie es bitte und vergleichen Sie es ~"
Schwer: https://trial-endb-v1.herokuapp.com/ Feuerzeug: https://trial-endb-v2.herokuapp.com/
Wai "Wai selbst war von dieser Funktion beeindruckt, deshalb habe ich diesen Artikel geschrieben." Wai "Wenn Sie diesen Teratail-Beitrag finden, können Sie diesen Artikel lange lesen." Wai "Ich habe darüber gesprochen, es bald zu lösen." Wai "Dieser Artikel kann für viele Menschen laut sein."
Tochter "Papa" Tochter "Glauben Sie, dass Artikel, die die Antwort von Teratail ergänzen, auch jemandem helfen werden?" Tochter "Und indem Sie so in Wai-Notation schreiben" Tochter "Durch Wiedererleben von Erfolg aus Misserfolg" Tochter "Es wird in jedermanns Erinnerung Wurzeln schlagen" Tochter "Eigentlich einen Kommentar bekommen und es versuchen" Tochter "Hast du es durch Vergleichen bekommen?"
Wai "Seyana" Wai "Wai selbst kann die Vorteile nicht spüren, selbst wenn er plötzlich die beste Praxis sagt:" Das ist besser! " Wai "Ich hoffe, jemand liest diesen Artikel und fühlt sich gut dabei." Tochter "Ummami!"
Wai "Kann ich Eis essen, wenn ich aus dem Bad komme?" Tochter "Wow essen!"
Wai "(Ich habe bis zu diesem Zeitpunkt getauscht)" Wai "(Erzähl mir von dem Kind, das das trägt)"
** ~ ~ (Keine Pointe oder Berg) Ende ~ ~ **
Github https://github.com/shimayu22/Eikan-Database
Tabellenverknüpfungen, die selbst SQL-Amateure verstehen können (innere Verknüpfung und äußere Verknüpfung) Zusammenfassung der Django-Datenbankoperationen Als ich die von Django generierte Abfrage überprüfte, wurde sie in großer Anzahl ausgegeben [Django] Einfallsreichtum zur Reduzierung der Anzahl der Abfragen (wird jederzeit hinzugefügt) Django Reverse Pull Cheet Sheet (Abfragesatz) [Django 2.2] Wie zeigen Sie das Beziehungsziel in Django an? [Listenansicht] Enkelkinder-Tabelle mit Django durchsuchen So finden und beseitigen Sie N + 1-Probleme während der Entwicklung auf Django
Recommended Posts