Как удалить все отношения с manytomany?
В одной модели у меня есть это:
class MyModel(models.Model):
relations = models.ManyToManyField(OtherModel)
....
и если я выберу:
my_object.relations.remove(other_model_object)
это работает.
Как убрать все объекты из отношений? my_object.relations.clean()
не работает.
Ответы
Ответ 1
Во-первых, вам необходимо очистить отношения с помощью .clear() или .remove(), в зависимости от того, что больше соответствует вашим потребностям в соответствии с документацией.
После этого вам необходимо удалить объект с помощью метода [YourModel].delete().
Ответ 2
Если вам нужно удалить только связь для всего экземпляра между двумя моделями, вы можете сделать это, обратившись к Менеджеру таблицы отношений. К таблице связей m2m можно получить доступ через MyModel.relations.through
, поэтому для удаления связей это становится проще:
MyModel.relations.through.objects.all().delete()
ссылка:
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through
Ответ 3
Чтобы удалить все связанные с объекты, не удаляя их, просто используйте:
my_object.relations.remove(*my_object.relations.all())
Ответ 4
Используйте my_object.relations.clear()