繁体   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