У меня есть список кортежей внешних ключей вида [(3,2),(2,3)]
.И я хочу вставить элементы в таблицу ManyToMany внутри модели:
class Place(models.Model):
data=models.IntegerField()
connected_to=models.ManyToManyField('self')
class PlaceMeta(models.Model):
place=models.ForeignKey("places.Place")
, и я вставляю список (соединения) с помощью:
places=Place.objects.all()
for conn_1, conn_2 in connections:
for place in places:
if place.data == conn_1 and conn_1 != conn_2:
place.connected_to.add(conn_1, conn_2)
elif place.data == conn_2 and conn_1 != conn_2:
fixture.connected_to.add(conn_2, conn_1)
Когда я распечатываю список,печатает [(3L, 2L),(2L, 3L)]
(например), но после вставки в таблицу видно, что (2,2), (3,2), (2,3) и (3,3) были вставлены.
Я пытался в нескольких местах кода проверить, существует ли кортеж (a, a), и когда я печатаю перед вставкой, такой кортеж не отображается.Итак, как мне избежать вставки таких кортежей, поскольку они не отображаются в списке до того, как я вставлю их?