2017-12-01 1 views
0

これは私のmodels.pyです、私はブランドコードを作成するためにsave関数を呼び出しようとしています、また、サブカテゴリの親カテゴリは、他のカテゴリ。私を助けてください。clean()を呼び出すと、必須フィールドがチェックされず、管理パネルにエラーがスローされます。しかし、私はclean()を削除するときに必要なフィールドを検証します

class Brand(models.Model): 
    category = models.ForeignKey(Category, related_name='category', limit_choices_to={'parent_category__isnull': True}) 
    sub_category = models.ForeignKey(Category, related_name='sub_category', limit_choices_to={'parent_category__isnull': False}) 
    brand_code = models.CharField(max_length=70, null=True, blank=True) 
    brand_name = models.CharField(max_length=255) 

    def __str__(self): 
     return self.brand_name 

    def create_brand_code(self): 
     pass 

    def clean(self): 
     if not self.sub_category.parent_category == self.category: 
      raise ValidationError("{} is not the sub category of {}".format(self.sub_category, self.category)) 

    def save(self, *args, **kwargs): 
     if not self.brand_code: 
      if self.sub_category.parent_category == self.category: 
       self.brand_code = self.create_brand_code() 
       super(Brand, self).save(*args, **kwargs) 

答えて

0

私は私が正しくあなたの問題を理解してきたわからないんだけど、あなたはあなたがそれらにアクセスする前に外部キーが設定されていることを確認する必要があるように見えます:

def clean(self): 
    if self.sub_category_id and self.category_id: 
     if not self.sub_category.parent_category == self.category: 
      raise ValidationError(...) 
関連する問題