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

时间:2017-03-23 05:46:21

标签: python django django-models

我正在使用Django和mysql。我使用mysql中现有数据库中的命令models.py创建了inspectdb。它有一个模型如下:

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'),)

我已成功使用此模型将数据插入数据库。但在选择数据时,它显示的错误如下:

django.db.utils.OperationalError: (1054, "Unknown column 'Participationdata.id' in 'field list'")

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

id表中是否有Participationdate字段?

答案 1 :(得分:1)

通常您会在primary_key = True字段上设置eventid,因此Django会将其用作默认id。查看Custom id field in Django model

中的答案

但它是ForeignKeyField,因此您必须将id列添加到数据库和模型中。您可以删除managed = False(默认为True),然后删除:

  1. 为模型和migrate --fake-initial创建迁移(因为您已有表格,请参阅更多信息:https://docs.djangoproject.com/en/1.10/ref/django-admin/#cmdoption-migrate-fake-initial
  2. AutoField id添加到您的模型
  3. 照常运行makemigrationsmigrate
  4. 这样django就会使用您已经存在的表,但您可以通过模型对其进行修改。