簡體   English   中英

“字段列表”中的未知列“ModelName.id””

[英]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 ),然后:

  1. 為模型創建遷移並migrate --fake-initial (因為您已經有表,請參見更多信息: https : migrate --fake-initial
  2. 將自動AutoField id到模型中
  3. 運行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM