Как удалить отношение из модели 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 для пользователя

Вернуться на верх