Как убрать все отношения из множества? - PullRequest
44 голосов
/ 29 августа 2011

В одной модели у меня это:

class MyModel(models.Model):
    relations = models.ManyToManyField(OtherModel)
    ....

и если я выберу:

my_object.relations.remove(other_model_object)

это работает.

Как убрать все объекты из отношений? my_object.relations.clean () не работает.

Ответы [ 3 ]

49 голосов
/ 29 августа 2011

Во-первых, вам нужно очистить отношения с помощью .clear () или .remove (), в зависимости от того, что больше соответствует вашим потребностям в соответствии с документами .

После этого вам необходимо удалить объект (ы) с помощью метода [YourModel]. delete ().

37 голосов
/ 13 ноября 2012

Если вам нужно удалить только связь для всех экземпляров между двумя моделями, вы можете сделать это, открыв диспетчер таблицы взаимосвязей. Доступ к таблице отношений m2m можно получить через MyModel.relations.through, поэтому для удаления связей это становится легко:

MyModel.relations.through.objects.all().delete()

справка:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through

1 голос
/ 21 февраля 2019

Чтобы удалить все связанные объекты, не удаляя их, просто используйте:

my_object.relations.remove(*my_object.relations.all())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...