django抛出错误:列名无效';id';(SQL SERVER)

django抛出错误:列名无效';id';(SQL SERVER),django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我尝试使用django创建一个web应用程序,并连接到SQL Server数据库。我用来以django形式显示数据的表由2列组成。它们都是外键,并且一起构建表的主键 创建表[dbo]。[MyTable]([ID_Field1][int]不为空, [ID_Field2][int]不为空,约束[PK_Movies2Genres]主 键聚集([ID\U字段1]ASC,[ID\U字段2]ASC)和(PAD\U索引= 关闭,统计\u NORECOMPUTE=OFF,忽略\u DUP\u KEY=OFF,

我尝试使用django创建一个web应用程序,并连接到SQL Server数据库。我用来以django形式显示数据的表由2列组成。它们都是外键,并且一起构建表的主键

创建表[dbo]。[MyTable]([ID_Field1][int]不为空, [ID_Field2][int]不为空,约束[PK_Movies2Genres]主 键聚集([ID\U字段1]ASC,[ID\U字段2]ASC)和(PAD\U索引= 关闭,统计\u NORECOMPUTE=OFF,忽略\u DUP\u KEY=OFF, 在[PRIMARY]上允许第行锁定,在[PRIMARY]上允许第页锁定 [主要]

使用复选添加约束[FK_Field2]更改表[dbo].[MyTable] 外键([ID_字段2])引用[dbo]。[Table2]([ID_字段2])

ALTER TABLE[dbo].[MyTable]检查约束[FK_Field2]

使用复选添加约束[FK_Field1]更改表[dbo].[MyTable] 外键([ID_Field1])引用[dbo]。[Table1]([ID_Movie])

ALTER TABLE[dbo].[MyTable]检查约束[FK_Field1]

现在,django显然无法创建与这种sql表结构对应的模型,也就是说,它无法创建包含多个字段的主键。相反,它在2列中的一列上设置主键,并在它设置的模型类的meta部分中设置主键

共同唯一=('id\u field1','id\u field2'),)

完整模型:

类MyTable(models.Model):

然而,这是django inspectdb告诉我的。我知道django在没有定义主键的情况下会自动创建一个名为id的字段。虽然定义了主键,但这里似乎是这样。知道如何处理这个问题吗?

使用:


如果customer_id与模型客户相关,而company与模型公司相关,我将如何定义compositeForeign键?复合键只使用一个模型作为参数,对吗?对不起,我不知道!我和你们有着同样的问题,对我来说,复合钥匙不是最好的解决方案,我把它停在一边,我正在清除公司里的其他火灾。如果你有消息,请告诉我!我的解决方法是添加另一个id字段。我对这个解决方案不是很满意,但django似乎不支持这种模型结构。
id_field1 = models.ForeignKey(Table1, on_delete=models.DO_NOTHING, db_column='ID_Field1') 
id_field2 = models.ForeignKey(Table2, on_delete=models.DO_NOTHING, db_column='ID_Field2')

class Meta:
    managed = False
    db_table = 'MyTable'
    unique_together = (('id_field1', 'id_field2'),)
class Customer(models.Model):

    company = models.IntegerField()
    customer_id = models.IntegerField()
    name = models.CharField(max_length=255)
    address = CompositeForeignKey(Address, on_delete=CASCADE, to_fields={
        "tiers_id": "customer_id",
        "company": LocalFieldValue("company"),
        "type_tiers": RawFieldValue("C")
    })

    class Meta(object):
        unique_together = [
            ("company", "customer_id"),
        ]


class Contact(models.Model):
    company_code = models.IntegerField()
    customer_code = models.IntegerField()
    surname = models.CharField(max_length=255)
    # virtual field
    customer = CompositeForeignKey(Customer, on_delete=CASCADE, related_name='contacts', to_fields={
        "customer_id": "customer_code",
        "company": "company_code"
    })