Die Methode zum Festlegen der Anfangsdaten in Django ist etwas eigenartig. Ich werde schreiben, wovon ich ein bisschen süchtig bin.
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