2017-02-21 90 views
0

我的电话是Django的加入查询ID

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?

+0

你见过这些问题吗? http://stackoverflow.com/questions/4192409/unknown-column-x-id-error-in-django-using-existing-db和http://stackoverflow.com/questions/3787237/django-models-1054- unknown-column-in-field-list – Shadow

+0

嗯,我没有同步问题,但其中的一个答案确实链接到了我正在寻找的内容,谢谢 – nic

+0

实际上,我没有那第一个链接,是的这个问题是那个人的复制 – nic

回答

-1

埋在docs深,

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

+0

如果wuestion是一个自我承认的重复,那么请不要回答它,但要么删除它,要么等到它被标记为重复,然后接受它。 – Shadow

+0

回答之前,我意识到这是一个dup – nic