我正在使用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'")
我该如何解决这个问题?
答案 0 :(得分:1)
id
表中是否有Participationdate
字段?
答案 1 :(得分:1)
通常您会在primary_key = True
字段上设置eventid
,因此Django会将其用作默认id
。查看Custom id field in Django model
但它是ForeignKeyField
,因此您必须将id列添加到数据库和模型中。您可以删除managed = False
(默认为True
),然后删除:
migrate --fake-initial
创建迁移(因为您已有表格,请参阅更多信息:https://docs.djangoproject.com/en/1.10/ref/django-admin/#cmdoption-migrate-fake-initial)AutoField id
添加到您的模型makemigrations
和migrate
。这样django就会使用您已经存在的表,但您可以通过模型对其进行修改。