У меня есть Publication
с и Author
с. Так как порядок Author
s имеет значение (профессор не хочет быть в списке после стажера, предоставившего некоторые тривиальные данные), я определил собственную модель «многие ко многим»:
class Authorship(models.Model):
author = models.ForeignKey("Author")
publication = models.ForeignKey("Publication")
ordering = models.IntegerField(default=0)
class Author(models.Model):
name = models.CharField(max_length=100)
class Publication(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField(Author, through=Authorship)
У меня есть ModelForm
для публикаций и использую его в виде. Проблема в том, что когда я звоню form.save()
, авторы, очевидно, добавляются с порядком по умолчанию 0
. Я написал OrderedModelMultipleChoiceField
с помощью метода clean
, который возвращает объекты, которые будут сохранены в правильном порядке, но я не нашел ловушку, в которой фактически сохраняются данные m2m, чтобы я мог добавить / редактировать / удалите Authorship
экземпляры самостоятельно.
Есть идеи?