如何删除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

回到顶部