私は(あまりにも、Wordの言語を持っているモデル)この1に類似のManyToManyFieldでモデルを持っている:Djangoの多対多モデル検証
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の管理者を介して)I 'Sentence' instance needs to have a primary key value before a many-to-many relationship can be used
を入手してください。つまり、保存する前にself.wordsにアクセスすることはできませんが、これはまさに私がやろうとしていることです。それにもかかわらず、あなたはこのモデルを検証することができます回避するための方法はありますか?モデルのフィールドを直接検証したいと思っています。
この例外に関する多くの質問がありましたが、私の問題のヘルプが見つかりませんでした。私はどんな提案もありがとう!
Wordを作成する場合は、それがSentenceに関連付けられていることをどのように検証しますか?モデル定義に「文章」フィールドはありません。 – johnklawlor
誰もがフォームを使用しているわけではありません。私はこれをDjangoの大きな欠陥と考えています。誰かがより良い答えを持っていますか? –