[英]Django models - related objects validation
我想知道如何對相關對象進行驗證。 令我驚訝的是,我還沒有找到很多相關的信息。
例如:
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)
category
,列表沒有重復項? categories
是' sale ',必須設置price_sale
否則將其設置為null? image
,但插入的image
不超過10張? 我認為這應該在模型中完成,以防萬一我選擇輸入除表單之外的數據(類似於解析提要),這是正確的嗎? 我嘗試處理clean()
但在我處理m2m關系等之前,它需要PK。
額外的問題:為什么我會選擇使用限制而不是FK限制字段?
嘗試顯式創建映射表,並讓您的ManyToMany關系through
此模型。 由於它是普通的Django模型,因此您應該能夠在其clean
方法中定義大多數驗證邏輯。
class Listing(models.Model):
categories = models.ManyToManyField('Category', through='CategoryListing')
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 CategoryListing(models.Model):
category = models.ForeignKey(Category)
listing = models.ForeignKey(Listing)
def clean(self):
# validation logic
https://docs.djangoproject.com/zh-CN/1.3/topics/db/models/#intermediary-manytomany
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.