当我使用django.db.backends.postgresql_psycopg2
并运行manage.py syncdb
时,会出现以下错误
django.db.utils.ProgrammingError: multiple primary keys for table "token_place" are not allowed
LINE 3: "signatureid" integer NOT NULL PRIMARY KEY REFERENCES "s...
模型:
class TokenPlace(models.Model):
token = models.ForeignKey(Token, db_column='tokenid', primary_key=True)
signature = models.ForeignKey(Signature, db_column='signatureid', primary_key=True)
place = models.IntegerField(primary_key=True)
class Meta:
db_table = 'token_place'
我的模型与mysql
一起正常工作,但我必须在postgres
如何解决这个问题?
答案 0 :(得分:1)
在阅读完答案后我终于得到了问题,你正在寻找Django中的复合键。不幸的是,Django还没有支持。如果您需要它,有几个选择:
尝试使用Django Composite Key项目:https://github.com/simone/django-compositekey
使用此页面上提供的修补程序和说明向Django添加支持:https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys
使用SQLAlchemy(http://www.sqlalchemy.org/)进行查询,因为它可以正确支持。
在Django中使用单个主键列,并从/向可写视图读取/写入,该视图与后台中的实际表进行通信。