1
関連オブジェクトの検証方法を知りたいと思います。私の驚いたことに、私はこれに関する多くの関連情報を発見していない。例えばDjangoモデル関連オブジェクトのバリデーション
:
class Listing(models.Model):
categories = models.ManyToManyField('Category')
price_sale = models.DecimalField(max_digits=8, decimal_places=0, null=True)
price_rent = models.DecimalField(max_digits=8, decimal_places=0, null=True)
price_vacation = models.DecimalField(max_digits=8, decimal_places=0, null=True)
class Category(models.Model):
value = models.CharField(max_length=32)
class Image(models.Model):
listing = models.ForeignKey('Listing')
image = models.ImageField(upload_to=get_file_path)
- 私は、少なくとも1
category
が設定されていることを確認することができますどのように、リストには 重複がありませんか? categories
のいずれかが「販売」の場合、price_sale
を設定する必要がありますか、それともnullに設定する必要がありますか?- 少なくとも
image
が挿入されていますが、それ以上の画像が挿入されていないことを確認するにはどうすればよいですか?
フォームからデータを入力することを選択した場合(フィード解析のような)、これがモデルで実行されるべきだと思っていますが、これは正しいでしょうか?私はclean()
を扱おうとしましたが、m2mの関係などを扱う前にPKが必要です。
ボーナスの質問:なぜFKによって制限されるのではなく選択肢を使ってフィールドを制限するのですか?
これは、よりlisting'ない 'に関連して自身が参加するテーブルの行を検証していないためでしょうか?少なくとも1つのm2mの関係を持たないで 'listing'を挿入しないようにしたいと思います。 – RS7