2017-02-21 89 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