如何创建没有主键列的 django 模型并避免 Id 默认列

Jay*_*sai 5 python sql-server django

我使用 SQL Server 作为默认数据库。我使用 inspectdb 命令复制了模型中的 SQL Server 表。现在,SQL Server 表没有任何主键列。因此,django 模型会自动创建 id 作为主键,并在发布数据时出现错误。

列“id”不存在

是否有任何解决方法可以同时删除 id 而不在模型的任何列上定义主键?

from django.db import models

class ImptCustomer(models.Model):
    customerid = models.IntegerField(db_column='CustomerId', blank=True, null=True)  # Field name made lowercase.
    name = models.CharField(db_column='Name', max_length=50, blank=True, null=True)  # Field name made lowercase.
    phonenumber = models.CharField(db_column='PhoneNumber', max_length=20, blank=True, null=True)  # Field name made lowercase.
    emailaddress = models.CharField(db_column='EmailAddress', max_length=100, blank=True, null=True)  # Field name made lowercase.
    streetline = models.CharField(db_column='StreetLine', max_length=50, blank=True, null=True)  # Field name made lowercase.
    city = models.CharField(db_column='City', max_length=50, blank=True, null=True)  # Field name made lowercase.
    statecode = models.CharField(db_column='StateCode', max_length=5, blank=True, null=True)  # Field name made lowercase.
    postalcode = models.CharField(db_column='PostalCode', max_length=20, blank=True, null=True)  # Field name made lowercase.
    customer_key = models.IntegerField(db_column='Customer_Key', blank=True, null=True, editable = False)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'IMPT_Customer'
Run Code Online (Sandbox Code Playgroud)

Dae*_*lus 4

如果您没有显式定义主键,则 id 将成为您的主键。所以你不能那样做。