2017-10-15 6 views
0

models.pyDjango - ayant plus d'un foreignkey dans le même modèle

class City(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=35) 
    countrycode = models.CharField(max_length=3) 
    district = models.CharField(max_length=200) 
    population = models.IntegerField(default='0') 

class Country(models.Model): 
    code = models.CharField(primary_key=True, max_length=3) 
    name = models.CharField(max_length=52) 
    continent = models.CharField(max_length=50) 
    region = models.CharField(max_length=26) 
    surfacearea = models.FloatField() 
    indepyear = models.SmallIntegerField(blank=True, null=True) 
    population = models.IntegerField() 
    lifeexpectancy = models.FloatField(blank=True, null=True) 
    gnp = models.FloatField(blank=True, null=True) 
    gnpold = models.FloatField(blank=True, null=True) 
    localname = models.CharField(max_length=45) 
    governmentform = models.CharField(max_length=45) 
    headofstate = models.CharField(max_length=60, blank=True, null=True) 
    capital = models.IntegerField(blank=True, null=True) 
    code2 = models.CharField(max_length=2) 

SQL Pour les modèles

City INSERT INTO city VALUES (3955,'Sunnyvale','USA','California',131760);

pour Pays INSERT INTO country VALUES ('BHS','Bahamas','North America','Caribbean',13878.00,1973,307000,71.1,3527.00,3347.00,'The Bahamas','Constitutional Monarchy','Elisabeth II',148,'BS');

Question 1 Dans les modèles mentionnés ci-dessus comment puis-je associer un code dans le Country.code-City.countrycode, je ne suis pas en mesure de le faire parce que le modèle de pays est déclaré après le modèle City.

Question 2 Et comment relier le Country.capital in le modèle qui est un pays entier qui se rapporte à City.name.

Remarque Je suis conversion d'un fichier .sql avec InnoDB Engine Postgresql.

Répondre

0

semble que vous avez besoin de déclarer foreign key liés par la chaîne

class City(models.Model): 
    name = models.CharField(max_length=35) 
    countrycode = models.ForeignKey('Country', blank=True, null=True) 


class Country(models.Model): 
    code = models.CharField(primary_key=True, max_length=3) 
    name = models.CharField(max_length=52) 
    capital = models.ForeignKey('Country', blank=True, null=True) 
+0

Je ne comprends pas, je reçois * city.countrycode_id n'existe pas * erreur –

+0

avez-vous effectué des migrations? –

+0

oui, je ne comprends pas comment la colonne 'id' est automatiquement ajoutée à la table. –