如何从django模型中删除多对多字段的关系?

8zzbczxx  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(108)

如何从具有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表中删除关系,怎么做?

e5njpo68

e5njpo681#

找到解决方案:

User.objects.get(id=USER_ID).txhomes_set.clear()

这就是我们如何为用户删除与txhomes表的所有关系

相关问题