2013-11-30 3 views
0

(Работает на Google, например вычислителя)Джанго внешний ключ не работает

Я создал следующие таблицы базы данных модели &, таблицы базы данных были созданы до модуля и были заполнены данными.

class MyCompany(models.Model): 
    companyuniqueid = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=150) 
    phonenumber = models.CharField(max_length=20, unique=True) 
    email = models.EmailField(blank=True, unique=True) 
    class Meta: 
     managed = True 
     db_table = 'mycompany' 

class MyUser(models.Model): 
    UserUniqueID = models.AutoField(primary_key=True) 
    name = models.CharField(max_length=50) 
    nickname = models.CharField(max_length=50) 
    phonenumber = models.CharField(max_length=20, unique=True) 
     class Meta: 
      managed = True 
      db_table = 'myuser' 

Я создал два простых представления, которые действительно выбрать все из таблиц с использованием Джанго company_list = MyCompany.objects.all() же для пользователей все работает отлично!

Проблема: , когда я пытаюсь войти в модель MyUser следующих company = models.ForeignKey(MyCompany) вызова к сервису завершается с ошибкой: столбец таблицы базы данных myuser.company_id does not exist MyUser имеет столбец со ссылкой на MyCompany.companyuniqueid колонки следующим образом: определение: CompanyUniqueID BIGINT NULL, и ссылка:

CONSTRAINT user_company_id_fkey FOREIGN KEY (CompanyUniqueID) 
     REFERENCES MyCompany (CompanyUniqueID) 

Я прочитал Django добавляет _id по умолчанию для первичных ключей, но не мог понять, как удалить его или указать его companyuniqueid

ответ

1

Как и во всех областях, вы можете использовать параметр db_column указать столбец базы данных, представленное поле:

company = models.ForeignKey(MMCompany, db_column='CompanyUniqueID') 
0

Вы также можете использовать models.OneToOneField() является ForeignKey.

+1

Пожалуйста, разместите код. Ответы Oneliner в основном не очень полезны. – user3142695

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