如何删除Django中ManyToMany字段的一个实例
我想删除Django中ManyToMany字段的一个实例。 我试过,但它不工作:如何删除Django中ManyToMany字段的一个实例
act = Activity.objects.get(pk=pk) act.save()
attendee, _ = Attendee.objects.get_or_create(student=request.user)
**act.attendee.delete(attendee)**
return...
的想法是删除鉴于其主键的特定活动的与会者。
这是我的模型:
class Attendee(models.Model): student = models.ForeignKey(User, related_name="attendee")
class Activity(models.Model):
type = models.CharField(max_length=50, default="")
title = models.CharField(max_length=200, default="")
description = models.CharField(max_length=500)
owner = models.ForeignKey(User, related_name="owner")
college = models.CharField(max_length=200)
location = models.CharField(max_length=200)
room = models.CharField(max_length=200)
startDate = models.DateTimeField(null=True, blank=True)
endDate = models.DateTimeField(null=True, blank=True)
attendee = models.ManyToManyField(Attendee, related_name="attendees",null=True, blank=True)
回答:
要删除多对多的关系,使用remove()方法,而不是删除。
act.attendee.remove(attendee)
此外,我建议修改的命名约定更好的可读性,
class Activity(models.Model): attendees = models.ManyToManyField(Attendee, related_name="activities", null=True, blank=True)
因此,移除逻辑将是
act.attendees.remove(attendee)
您还可以删除使用反向关系,
attendee.activities.remove(act)
以上是 如何删除Django中ManyToMany字段的一个实例 的全部内容, 来源链接: utcz.com/qa/260052.html