如何删除只有m2m关系?(How to delete ONLY m2m relation?)
模型:
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)当我知道user_id和province_id时,如何删除关系? 如果我用户delete()方法它也删除省,我想避免它。 我找不到如何在m2m字段中删除1个特定关系。
model:
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)How can I delete relation when I know user_id and province_id? If i user delete() method it also removes province and I want to avoid it. I can't find anywhere how to delete 1 specific relation in m2m field.
最满意答案
使用ManyToMany管理器上的remove方法。
Province.objects.get(id=3).user.remove(user_id)如果您愿意,您也可以直接访问直通表:
Province.user.through.objects.get(province__id=3, user__id=4).delete()Use the remove method on your ManyToMany manager.
Province.objects.get(id=3).user.remove(user_id)You can also access the through table directly if you so desire:
Province.user.through.objects.get(province__id=3, user__id=4).delete()更多推荐
发布评论