У меня есть список кортежей внешних ключей формы [(3,2),(2,3)]
. И я хочу, чтобы вставить элементы в таблицу ManyToMany в модели:Проверка того, что ForeignKeys равны друг другу
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), и когда я печатаю перед вставкой, не отображается такой кортеж. Итак, как мне избежать вставки таких кортежей, поскольку они даже не появляются в списке до ввода?
Добавьте скобку вокруг conn_1, conn_2 – zsong
где? в заявлении for? так что это 'for (conn_1, conn_2) в соединениях:' –