Я прочитал все, что могу найти о связях ManyToMany в Django, но до сих пор я не вижу ничего, что решает мою конкретную проблему наличия отношений ManyToMany-Through наряду с простой ManyToMany, с которой Django справляется так легко.
Рассмотрим следующие модели:
class Treatment(models.Model):
...
book = models.ManyToManyField(Book, through='TreatmentLocation')
category = models.ManyToManyField(Category)
class Book(models.Model):
name = models.CharField(...)
class TreatmentLocation(models.Model):
treatment = models.ForeignKey(Treatment)
book = models.ForeignKey(Book)
page = models.CharField(...)
class Category(models.Model):
name = models.CharField(...)
У меня есть данные, поступающие в массив POST, но сложное представление View оказывается сложным.
def save_treatment(request):
form = TreatmentForm(request.POST)
if form.is_valid():
treatment = form.save()
pages = request.POST.getlist('page')
books = request.POST.getlist('book')
counter = 0
for page in pages:
book_id = books.__getitem__(counter)
TreatmentLocation.objects.create(treatment_id=treatment.id, book_id=book_id, page=page)
counter = counter + 1
form.save_m2m()
else:
...
Лечение сохраняется успешно, как и ЛечениеLocations, но как только я пытаюсь вызвать save_m2m () для хранения внешних ссылок на категорию обработки, я получаю ошибку Cannot set values on a ManyToManyField which specifies an intermediary model. Use TreatmentLocation Manager
.
Кто-нибудь знает, как сохранить обаэти вещи?Я хотел бы избежать обращения к сырому SQL.