[英]Unknown column 'ModelName.id' in 'field list'"
我正在使用 Django 和 mysql。我使用 mysql 中現有數據庫中的命令inspectdb
創建了models.py
。它有一個 model,如下所示:
class Participationdata(models.Model):
userid = models.ForeignKey('Volunteer', models.DO_NOTHING, db_column='UserId') # Field name made lowercase.
eventid = models.ForeignKey('Events', models.DO_NOTHING, db_column='EventId') # Field name made lowercase.
ptrflag = models.IntegerField(db_column='PtrFlag', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'ParticipationData'
unique_together = (('userid', 'eventid'),)
我已成功使用此 model 將數據插入數據庫。 但是在選擇數據時顯示如下錯誤:
django.db.utils.OperationalError: (1054, "Unknown column 'Participationdata.id' in 'field list'")
我應該如何解決這個問題?
您在Participationdate
表中是否有id
字段?
通常,您將在eventid
字段上設置primary_key = True
,因此Django將其用作默認id
。 查看Django模型中“ 自定義ID”字段中的答案
但這是一個ForeignKeyField
,因此您必須向數據庫和模型添加id列。 您可以刪除managed = False
(默認為True
),然后:
migrate --fake-initial
(因為您已經有表,請參見更多信息: https : migrate --fake-initial
) AutoField id
到模型中 makemigrations
並照常migrate
。 這樣,django使用您已經存在的表,但是您可以通過模型對其進行修改。
當我將primary_key=True
添加到我的 id 時,我解決了這個錯誤,因為 Django 需要一個主鍵。 在我的代碼中,我在視圖 ID 中添加了主鍵,因為inspectdb
沒有從數據庫視圖中獲取鍵
class ViewRespuestaEncuestas(models.Model):
id_encuesta = models.IntegerField(primary_key=True)
encuesta = models.CharField(max_length=45, db_collation='utf8_general_ci')
id_usuario = models.IntegerField()
nombre_usuario = models.CharField(
max_length=40, db_collation='utf8_general_ci', blank=True, null=True)
id_pregunta = models.IntegerField()
pregunta = models.TextField(db_collation='utf8_general_ci')
id_respuesta = models.IntegerField()
respuesta = models.CharField(max_length=60, db_collation='utf8_general_ci')
valor = models.IntegerField(blank=True, null=True)
class Meta:
managed = False # Created from a view. Don't remove.
db_table = 'view_respuesta_encuestas'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.