[PYTHON] Wenn Sie die Anfangsdaten von Django mit Relationen registrieren möchten

Die Methode zum Festlegen der Anfangsdaten in Django ist etwas eigenartig. Ich werde schreiben, wovon ich ein bisschen süchtig bin.

Initialisierung von Daten einschließlich ForeignKey

Ein Tutorial, in dem Sie aufgefordert werden, den Primärschlüssel eines extern referenzierten Felds zu schreiben. .. Leider konnte ich das nicht tun, da ich den Primärschlüssel in uuid geändert hatte.

Als Referenz habe ich übrigens so etwas gemacht.

models.py


class UUIDpk(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4,)

    class Meta:
        abstract = True

parent.json


[
  {
    "model": "app.ParentModel",
    "fields": {
      "name": "Dog"
    }
  }
]

children.json


[
  {
    "model": "app.ChildrenModel",
    "fields": {
      "parent": "Es ist etwas unvernünftig, mit uuid anzugeben.."
      "name": "Chihuahua"
    }
  }
]

Natural key

Django ist jedoch eine ausgezeichnete FW, also ist es okay ...! Sie können die Suchbedingungen für Relationen getrennt vom Primärschlüssel festlegen. Offizielles Dokument

models.py


class Parent(UUIDpk):
    class ParentManager(models.Manager):
        def get_by_natural_key(self, name):
            return self.get(name=name)

    #Benimm dich und einzigartig=Setzen wir es auf True.
    name = models.CharField(max_length=50, unique=True)
    objects = ParentManager()

Im obigen Beispiel ist nur das Namensfeld auf Natural Key gesetzt, aber es ist natürlich in Ordnung, mehr als einen zu haben.

Ändern Sie die mit loaddata registrierte json-Datei wie folgt.

parent.json


[
  {
    "model": "app.ParentModel",
    "fields": {
      "name": "Dog"
    }
  }
]

children.json


[
  {
    "model": "app.ChildrenModel",
    "fields": {
      "parent": ["Dog"]
      "name": "Chihuahua"
    }
  }
]

Recommended Posts

Wenn Sie die Anfangsdaten von Django mit Relationen registrieren möchten
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Wenn Sie mit dem Django REST-Framework filtern möchten
Verwenden Sie aggdraw, wenn Sie mit Kissen schön zeichnen möchten
Ich kenne? Datenanalyse mit Python oder Dingen, die Sie mit numpy verwenden möchten, wenn Sie möchten
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
Wenn Sie das Intervall der Achsenskala mit APLpy anpassen möchten
Wenn Sie es so verwenden möchten, wie es ist, wenn Sie es mit Lambda-Memo verwenden
Ein Gist-Repository, das Sie verwenden können, wenn Sie es mit ansible ausprobieren möchten
Wenn Sie eine Spalte spaltenweise durch einen fehlenden Wert (NaN) ersetzen möchten
Bedeutet Memo, wenn versucht wird, maschinelles Lernen mit 50 Bildern durchzuführen
Ich möchte 100 Datenwissenschaften mit Colaboratory schlagen
Wenn Sie den Chrome-Treiber aktualisieren möchten.
Ich möchte mit Djangos Migrate von vorne beginnen
Persönliche Best-Practice-Vorlage, die verwendet werden soll, wenn Sie MVP mit Flask erstellen möchten
[OpenCV] Wenn Sie überprüfen möchten, ob es mit imread richtig gelesen wird
Dinge zu tun, wenn Sie anfangen, sich mit Django zu entwickeln
Wenn Sie in der for-Anweisung plt.save möchten
Wenn die Variable, die Sie in Matplotlib als hochgestellt verwenden möchten, aus zwei oder mehr Zeichen besteht
Kenntnisse, die Sie beim Programmieren von Wettbewerben mit Python2 benötigen
Ich möchte Daten mit Python analysieren können (Teil 1)
Nützliche Operation, wenn Sie alle Probleme in mehreren Programmiersprachen mit Codewars lösen möchten
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte Daten mit Python analysieren können (Teil 2)
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Wenn es schwierig ist, das zu kopieren, was Sie mit vue erstellt haben
Wenn Sie möchten, dass das Thema Ihrer Sphinx-Dokumentation dasselbe ist
[TensorFlow] Wenn Sie TensorBoard ausführen möchten, installieren Sie es mit pip.
Wenn Sie eine mehrdimensionale Liste nach mehreren Zeilen sortieren möchten
Schön dich mit Python zu treffen
Umgang mit unausgeglichenen Daten
Wichtige Operationen, die Sie wissen möchten
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Ich möchte ○○ mit Pandas machen
Ich möchte mit Python debuggen
Ich möchte wütend auf meine Mutter werden, wenn die Erinnerung knapp ist
Wenn Sie awsebcli in CircleCI aufnehmen möchten, geben Sie die Python-Version an
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
Wenn Sie den HTTP-Header des Testclients von Flask ändern möchten
Wrapper, wenn Sie utf-8 + ansi color in der Windows-Konsole ausgeben möchten
Ansible Rolle, um die erste Bestätigungsmeldung bei der Verbindung mit SSH zu verhindern
Tipps (Datenstruktur), die Sie beim Programmieren von Wettbewerben mit Python2 kennen sollten
Verwendung von ManyToManyField mit Djangos Admin
Senden Sie Daten mit Vue.js an die DRF-API
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Wenn Sie eine Linie für eine lange Zeit brechen möchten
Lassen Sie uns zusammenfassen, was Sie tun möchten.
Wie man Problemdaten mit Paiza liest