2017-12-03 78 views
0

我想刪除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) 

回答

0

要刪除多對多的關係,使用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) 
相關問題