У меня есть 2 таблицы в моей базе данных Postgres. В одном содержится несколько штатов из разных частей мира, а в другом - почтовый индекс этих штатов.
Это несколько почтовых индексов в одном городе. Но почтовый индекс - это ссылка только на один город.
Вот пример моих 2 таблиц:
Состояния:
+----+------------+-----------+-----------------------+
| 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-light для своего ввода, и теперь я хочу перенаправить мои штаты, чтобы отфильтровать мой почтовый индекс с полем city_id.
Проблема в том, что ошибки Django говорят мне:
'stateModel.city_id' must set unique=True because it is referenced by a foreign key.
когда я пытаюсь использовать внешний ключ, который не является уникальным, поскольку один и тот же город может использоваться в другом штате. И я получил эту ошибку, когда я пытаюсь использовать ManyToMany
ERREUR: la relation « postalCodeModel_city_id » n'existe pas
LINE 1: ...COUNT(*) AS "__count" FROM "postalCodeModel" INNER JOIN "postalCodeModel...
когда я пытаюсь создать поле «один ко многим» или отправлять ПК по умолчанию, если я выбрал опцию ManyToManyField.
Есть ли способ отфильтровать почтовый индекс по городам из модели штата? Нужно ли создавать таблицу City, а после этого создавать для этой таблицы параметр ManyToManyField with Trought?
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'