2016-05-31 64 views
1

我沒有通過下表的Django創建舊的數據庫:OperationalError:(1054「在‘字段列表’未知列‘time_table.id’」)

$ describe `time`; 
+---------------+--------------+------+-----+-------------------+-----------------------------+ 
| Field   | Type   | Null | Key | Default   | Extra      | 
+---------------+--------------+------+-----+-------------------+-----------------------------+ 
| data   | varchar(16) | NO | MUL | NULL    |        | 
| source  | varchar(255) | NO |  | NULL    |        | 
| source_origin | varchar(128) | YES |  | NULL    |        | 
| sys_updated | timestamp | NO |  | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | 
+---------------+--------------+------+-----+-------------------+-----------------------------+ 

我得到的這個模型表由inspectdb

class Time(models.Model): 
    data = models.ForeignKey('a_table', models.DO_NOTHING) 
    source = models.CharField(max_length=255) 
    source_origin = models.CharField(max_length=128, blank=True, null=True) 
    sys_updated = models.DateTimeField() 

    class Meta: 
     managed = False 
     db_table = 'time' 
     unique_together = (('data', 'source_origin'),) 

一個有一個簡單的串行:

class TimeSerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = Time 
     fields = ('data', 'source', 'source_origin', 'sys_updated') 

和簡單view

class TimeList(generics.ListAPIView): 
    """ Retrieves all data. """ 
    queryset = Time.objects.all() 
    serializer_class = TimeSerializer 

當我嘗試訪問此,讓我們說,localhost:8765/time/,我發現了以下錯誤:

OperationalError: (1054, "Unknown column 'time.id' in 'field list'") 

我的問題: 它是更多鈔票有一個表到沒有身份證的Django休息? 我不想在我的桌子上添加一個ID。

我在野外發現了一些answers,但它沒有幫助。

+0

正如Ivan所說,Django要求每個模型都有一個主鍵。 [這個答案](http://stackoverflow.com/a/33085716/113962)建議你可以通過使用'values()'來解決它。但是,我不知道是否可以將其餘框架序列化程序更改爲使用'values()'而不是常規的查詢集。 – Alasdair

回答

3

從DOC:

Each model requires exactly one field to have primary_key=True (either explicitly declared or automatically added).

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

所以恐怕答案是否定的。您可以嘗試在其他字段之一上設置primary_key = True(如果適用於您)。

+0

這不是一個好的解決方案,但如果我將'primary_key = True'添加到其它正在工作的其中一個字段 –

相關問題