Pre Django som celkom nový a snažím sa pridať nejaké „hostiteľské“ údaje do „záznamu“ pomocou djangovho háku na inicializáciu pomocou SQL (súbor SQL malým písmom v priečinku aplikácie a podpriečinku sql)
Tu sú tieto modely:
class Record(models.Model):
species = models.TextField(max_length = 80)
data=models.TextField(max_length = 700)
hosts = models.ManyToManyField("Host")
class Host(models.Model):
hostname = models.TextField()
Použil som ManyToManyField, pretože každý záznam by mal mať viac hostiteľov a hostitelia by mali byť „opakovane použiteľní“: tj mali by byť schopní sa objaviť v mnohých záznamoch.
Keď sa snažím vložiť pomocou SQL, mám
INSERT INTO myapp_record VALUES ("Species name", "data1", XYZ);
Nie som si istý, čo mám dať do XYZ (ManytoMany), ak chcem napríklad hostiteľov 1, 2 a 3
Oddelenie čiarkami nefunguje, samozrejme,a snažil som sa tuple, a to ani neurobil. Mal by som sa pokúsiť vložiť do sprostredkovateľskej tabuľky, ktorú robí Django? Má to podobný háčik ako ten, ktorý používam? Ak nie, ako môžem vykonať príkazy SQL v tejto tabuľke?
odpovede:
0 pre odpoveď č. 1Použitie počiatočných dátových súborov SQL je zastarané, Namiesto toho by ste mali používať migráciu údajov, ktorá môže vyzerať asi takto:
from django.db import models, migrations
def create_records(apps, schema_editor):
# We can"t import the Person model directly as it may be a newer
# version than this migration expects. We use the historical version.
Record = apps.get_model("yourappname", "Record")
Host = apps.get_model("yourappname", "Host")
host1 = Host.objects.get(hostname="host1")
record = Record.objects.create(name="Species name", data="Data")
record.hosts.add(host1)
...etc...
class Migration(migrations.Migration):
dependencies = [
("yourappname", "0001_initial"),
]
operations = [
migrations.RunPython(create_records),
]