Это отношение M2M, которое имеет промежуточную модель «Членство» (промежуточная модель хранит дополнительную информацию об отношениях между студентом и курсом, используя ключевое слово «through»).В моем случае дополнительные отношения - это оценка, которую студент получает на каждом из своих курсов.МОЯ ПРОБЛЕМА: Я не могу найти способ в django удалить / удалить только одно из отношений между одним из курсов и оценкой, которую имеет студент.
class Student(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Course(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Student, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
group = models.ForeignKey(Course, on_delete=models.CASCADE)
grade = models.CharField(max_length=64)
Так как 'Членство' является промежуточной моделью, он отключает функцию remove (), которая была бы доступна в обычных отношениях ManyToMany.
Вы можете использовать метод clear (),но он убрал бы все оценки, которые студент имеет в курсе отношений.Например: если бы «Карлос» был на 5 разных курсах с 5 разными оценками для каждого курса, а также какой-нибудь другой студент, «Мария»
c = курс
c.members.clear()
очистил бы каждый классотношения.Вы можете увидеть другой пример в документации: https://docs.djangoproject.com/en/2.0/topics/db/models/#extra-fields-on-many-to-many-relationships
И если я попытаюсь использовать метод remove (), я получу ошибку атрибута:
m1 = 'instance of Membership'
m1.remove()
AttributeError: 'Membership' object has no attribute 'remove'
В администраторе django я могу удалить один 'членский объект' === 'оценка класса', но не могу найти способ удалить его в оболочке или в моем кодекоторый не использует метод clear () (который не работает у меня, потому что очищает все отношения)
Пожалуйста, помогите: ///