如何删除只有m2m的关系?

rob*_*s85 3 django django-models django-orm

模型:

class Province(models.Model):
    user = models.ManyToManyField(User, blank=True)
    name = models.CharField(max_length=30, unique=True)

class City(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, editable=False, unique=False)
    ownership = models.ManyToManyField(User, through='UserCity')


class UserCity(models.Model):
    user = models.ForeignKey(User)
    province = models.ForeignKey(Province)
    city = models.ForeignKey(City)


class District(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True, editable=False)
    ownership = models.ManyToManyField(User, through='UserDistrict')

class UserDistrict(models.Model):
    user = models.ForeignKey(User)
    province = models.ForeignKey(Province)
    city = models.ForeignKey(City)
    district = models.ForeignKey(District)
Run Code Online (Sandbox Code Playgroud)

当我知道user_id和province_id时,如何删除关系?如果我用户delete()方法它也删除省,我想避免它.我找不到任何地方如何删除m2m字段中的1个特定关系.

Yuj*_*ita 10

ManyToMany管理器上使用remove方法.

Province.objects.get(id=3).user.remove(user_id)
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以直接访问直通表:

Province.user.through.objects.get(province__id=3, user__id=4).delete()
Run Code Online (Sandbox Code Playgroud)