Django外键不起作用

时间:2013-11-30 16:51:19

标签: sql django foreign-keys

(在谷歌计算引擎实例上运行)

我创建了以下模型&数据库表,数据库表在模块之前创建并填充了数据。

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'

我创建了两个简单的视图,使用django company_list = MyCompany.objects.all()从表中选择所有视图,对于用户来说一切正常!

问题: 当我尝试输入以下company = models.ForeignKey(MyCompany)的MyUser模型时 调用该服务失败,错误为: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

2 个答案:

答案 0 :(得分:1)

与所有字段一样,您可以使用db_column参数指定字段所代表的数据库列:

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

答案 1 :(得分:0)

您也可以使用models.OneToOneField()是ForeignKey。