2013-06-03 4 views
0

Я создаю модели в django. Это моя конфигурация в файле моделей. Я хочу создать таблицу governmentoffical, которая ссылается на графства и гражданина. Однако, когда я запустил manage.py sqlal, он изменил имя столбца в официальных государственных таблицах.django модель иностранный ключ созданный индекс

class counties(models.Model): 
    name = models.CharField(max_length=50, primary_key=True, unique=True) 
    population = models.IntegerField() 
    governer = models.CharField(max_length=75) 

class citizen(models.Model): 
    ssn = models.CharField(max_length=40, primary_key=True) 
    citizen_name = models.CharField(max_length=50, unique=True) 
    age = models.IntegerField() 
    income = models.IntegerField() 
    username = models.CharField(max_length=30) 
    password = models.CharField(max_length=30) 

class governmentOfficial(models.Model): 
    countyName = models.ForeignKey(counties, primary_key=True) 
    offical_name = models.ForeignKey(citizen, to_field='citizen_name') 
    position = models.CharField(max_length=50) 
    year_elected = models.IntegerField(max_length=4) 
    party = models.CharField(max_length=25) 
    county_username=models.CharField(max_length=20) 
    county_password=models.CharField(max_length=20) 

Вот мой вывод sql.

CREATE TABLE `troywebsite_governmentofficial` (
    `countyName_id` varchar(50) NOT NULL PRIMARY KEY, 
    `offical_name_id` varchar(50) NOT NULL, 
    `position` varchar(50) NOT NULL, 
    `year_elected` integer NOT NULL, 
    `party` varchar(25) NOT NULL, 
    `county_username` varchar(20) NOT NULL, 
    `county_password` varchar(20) NOT NULL 
) 
; 
ALTER TABLE `troywebsite_governmentofficial` ADD CONSTRAINT `countyName_id_refs_name_2c9a2c94` FOREIGN KEY (`countyName_id`) REFERENCES `troywebsite_counties` (`name`); 
ALTER TABLE `troywebsite_governmentofficial` ADD CONSTRAINT `offical_name_id_refs_citizen_name_6f795c2a` FOREIGN KEY (`offical_name_id`) REFERENCES `troywebsite_citizen` (`citizen_name`); 

CREATE INDEX `troywebsite_governmentofficial_effdd6a5` ON `troywebsite_governmentofficial` (`offical_name_id`); 
CREATE INDEX `troywebsite_solider_c5b4e228` ON `troywebsite_solider` (`solider_name_id`); 

Есть ли способ, чтобы вынуть CREATE INDEX в governmentofficial, и оставить, чтобы быть countyName и Official_name в качестве колонки?

+0

Есть ли конкретная причина, почему вы хотите ID столбцы не похожи ID столбцов? –

+0

нет особых причин. Мне просто интересно, почему django меняет название столбцов. – user1817081

+1

[Потому что это то, что он делает] (https://docs.djangoproject.com/en/dev/ref/models/fields/#database-representation), поскольку имя столбца не имеет значения для кода. –

ответ

Смежные вопросы