【发布时间】:2020-03-07 13:43:53
【问题描述】:
在数据库上我有 3 个表:
languagescitiescity_language
city_language表格:
+-------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| city_id | bigint(20) unsigned | NO | PRI | NULL | |
| language_id | bigint(20) unsigned | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
+-------------+---------------------+------+-----+---------+-------+
型号
class CityLanguage(models.Model):
city = models.ForeignKey('Cities', models.DO_NOTHING)
language = models.ForeignKey('Languages', models.DO_NOTHING)
name = models.CharField(max_length=255)
class Meta:
managed = False
db_table = 'city_language'
unique_together = (('city', 'language'),)
模型没有 id 字段和主键,我的表也没有 id 列。如果我运行此代码,则会出现错误:
(1054, "Unknown column 'city_language.id' in 'field list'")
如果我为列定义主键,则该列值应该是唯一的。如果我想用不同语言放置同一个城市时使用primary_key,我会得到
这个城市(名称或语言取决于选择哪一列作为主键)已经存在。
我不想为数据透视表创建 id 列。没有理由为数据透视表创建 id 列。请你告诉我如何以正确的方式使用数据透视表。谢谢。
【问题讨论】:
-
Django 无法处理跨多列的主键,因此目前这是不可能的。
-
django 框架上哪种方式正确,我应该为它创建 id 列吗?
标签: python django python-3.x database django-models