【问题标题】:django adding query for id [duplicate]django为id添加查询[重复]
【发布时间】:2017-02-21 01:16:12
【问题描述】:

我的电话是

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 呢?

【问题讨论】:

标签: python mysql django django-models


【解决方案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(显式声明或自动添加)。

【讨论】:

  • 如果这个问题是一个自我承认的重复,那么请不要回答它,但要么删除它,要么等到它被标记为重复然后接受它。
  • 在我意识到这是一个重复之前就回答了
猜你喜欢
  • 2021-02-25
  • 2021-04-02
  • 1970-01-01
  • 2021-12-07
  • 2017-11-03
  • 2021-10-15
  • 1970-01-01
  • 2019-01-23
  • 2018-10-31
相关资源
最近更新 更多