我的Postgres数据库中有两个表。一个包含来自世界不同地区的多个州,另一个包含这些州的邮政编码。你知道吗
它们是一个城市的多个邮政编码。但邮政编码只与一个城市相连。你知道吗
下面是我的两个表的示例:
国家:
+----+------------+-----------+-----------------------+
| pk | state | city | city_id |
+----+------------+-----------+-----------------------+
| 1 | Montreal | Quebec | 123 |
+----+------------+-----------+-----------------------+
| 2 | Laval | Quebec | 123 |
+----+------------+-----------+-----------------------+
| 3 | Ottawa | Ontario | 837 |
+----+------------+-----------+-----------------------+
邮政编码:
+----+------------+-----------+-----------------------+
| pk |Postal Code | city | city_id |
+----+------------+-----------+-----------------------+
| 1 | H1H1H1 | Quebec | 123 |
+----+------------+-----------+-----------------------+
| 2 | H4P2T5 | Quebec | 123 |
+----+------------+-----------+-----------------------+
| 3 | G1G2G2 | Ontario | 837 |
+----+------------+-----------+-----------------------+
我正在使用django autocomplete光作为输入,现在我想转发我的州,用城市id字段过滤我的邮政编码。你知道吗
我的问题是Django的错误告诉我:
'stateModel.city_id' must set unique=True because it is referenced by a foreign key.
当我尝试使用外键时,外键不是唯一的,因为同一个城市可能在不同的州使用。当我试着用很多的时候我犯了这个错误
ERREUR: la relation « postalCodeModel_city_id » n'existe pas
LINE 1: ...COUNT(*) AS "__count" FROM "postalCodeModel" INNER JOIN "postalCodeModel...
当我尝试创建一对多字段或在默认情况下发送pk时,如果我选择ManyToManyField选项。你知道吗
有没有办法从州模型中过滤城市的邮政编码?我是否需要创建一个City表,然后创建一个manytomanyfieldwithtrought选项到这个新表?
class stateModel(models.Model):
idunique = models.IntegerField(unique=True, blank=True, null=True)
state = models.TextField(blank=True, null=True)
city = models.TextField(blank=True, null=True)
city_id = models.TextField(blank=True, null=True)
def __str__(self):
return self.state
class Meta:
managed = False
db_table = 'stateDB'
class codePostalModel(models.Model):
cp_id = models.IntegerField(blank=True, null=True)
cp = models.TextField(blank=True, null=True)
#city_id_cp = models.TextField(blank=True, null=True)
city_id_cp = models.ForeignKey(stateModel, to_field='city_id', blank=True, null=True, on_delete=models.CASCADE)
#city_id_cp = models.ManyToManyField(stateModel)
def __str__(self):
return self.cp
class Meta:
managed = False
db_table = 'postalCodeDB'
目前没有回答
相关问题 更多 >
编程相关推荐