Django ManyToMany model validation

У меня есть модель с ManyToManyField, похожая на эту (модель Word тоже имеет язык):

class Sentence(models.Model):
    words = models.ManyToManyField(Word)
    language = models.ForeignKey(Language)
    def clean(self):
        for word in self.words.all():
            if word.language_id != self.language_id:
                raise ValidationError('One of the words has a false language')

При попытке добавить новое предложение (например, через django admin) я получаю 'Sentence' instance needs to have primary key value before many-to-many relationship can be used. Это означает, что я не могу получить доступ к self.words до его сохранения, но это именно то, что я пытаюсь сделать. Есть ли способ обойти это, чтобы все же проверить эту модель? Я действительно хочу напрямую проверять поля модели.

Я нашел много вопросов, касающихся этого исключения, но не смог найти помощи для моей проблемы. Буду благодарен за любые предложения!

37
задан purefanatic 2 November 2011 в 19:52
поделиться