Как удалить отношение из модели django с полем ManyToMany?
Как удалить отношение из модели с полем ManyToMany?
У меня есть модель с отношением ManyToManyField. Мне нужно удалить отношение, но не данные из следующей модели:
class TxHomes(models.Model):
user = models.ManyToManyField(settings.AUTH_USER_MODEL)
home_id = models.PositiveIntegerField(primary_key=True, unique=True, null=False)
name = models.CharField(max_length=255, null=True)
geo_name = models.CharField(max_length=255, null=True)
payload = models.JSONField()
Django ORM получил сгенерированные таблицы:
-- auto-generated definition
create table main_txhomes
(
home_id integer unsigned not null primary key,
name varchar(255),
geo_name varchar(255),
...
);
create table main_txhomes_user
(
id primary key autoincrement,
txhomes_id ...,
user_id ...
);
Когда я применяю для этого следующий код
TxHomes.objects.filter(
home_id__in=TxHomes.objects.filter(user=USER_ID).values('home_id')
,user=USER_ID).delete()
у меня все данные удалены из main_txhomes
Я хочу сохранить данные в таблице main_txhomes, мне нужно удалить отношения из таблицы main_txhomes_user. Как это сделать?
Решение найдено:
User.objects.get(id=USER_ID).txhomes_set.clear()
Вот как мы удаляем все отношения к таблице txhomes для пользователя