django为id添加查询

时间:2017-02-21 01:16:12

标签: python mysql django django-models

我的电话是

venues = ExtCalendar.objects.all()

但是我收到了错误

(1054, "Unknown column 'ext_calendar.id' in 'field list'")

即使ext_calendar表没有此列

我的模特:

class ExtCalendar(models.Model):
    source_id = models.CharField(max_length=255)
    ext_type = models.CharField(max_length=32)
    ext_id = models.CharField(max_length=255)
    out_id = models.CharField(max_length=255, blank=True, null=True)
    confidence = models.FloatField(blank=True, null=True)
    data = models.CharField(max_length=8192, blank=True, null=True)
    ext_name = models.CharField(max_length=255, blank=True, null=True)
    out_name = models.CharField(max_length=255, blank=True, null=True)
    last_out_id = models.CharField(max_length=32, blank=True, null=True)
    status = models.CharField(max_length=10)
    out_formatted = models.CharField(max_length=1024, blank=True, null=True)
    ext_formatted = models.CharField(max_length=1024, blank=True, null=True)

    class Meta:
        db_table = 'ext_calendar'
        unique_together = (('source_id', 'ext_type', 'ext_id'),)

    def __unicode__(self):
        return self.ext_id

venues的返回值是包含错误查询的QuerySet:

SELECT `ext_calendar`.`id`, `ext_calendar`.`source_id`, `ext_calendar`.`ext_type`, `ext_calendar`.`ext_id`, `ext_calendar`.`out_id`, `ext_calendar`.`confidence`, `ext_calendar`.`data`, `ext_calendar`.`ext_name`, `ext_calendar`.`out_name`, `ext_calendar`.`last_out_id`, `ext_calendar`.`status`, `ext_calendar`.`out_formatted`, `ext_calendar`.`ext_formatted` FROM `ext_calendar`

那么如何从查询中删除id?

1 个答案:

答案 0 :(得分:-1)

埋藏在文档深处,

https://docs.djangoproject.com/en/1.10/topics/db/models/#automatic-primary-key-fields

django自动(并默默地)为您添加id字段。 来自文档:

  

自动主键字段

     

默认情况下,Django为每个模型提供以下字段:

     

id = models.AutoField(primary_key=True)

     

这是一个自动递增的主键。

     

如果您想指定自定义主键,只需在其中一个字段中指定 primary_key = True 即可。如果Django发现您已明确设置 Field.primary_key ,则不会添加自动 id 列。

     

每个模型只需要一个字段就可以 primary_key = True (显式声明或自动添加)。