简体   繁体   English

不是 null 约束失败 django 干净的 function

[英]Not null constraint failed django with clean function

I am getting the error you see in the title.我收到了您在标题中看到的错误。 my purpose我的目的

  1. if banner_button_activate is true then banner_button_title and banner_button_url must be filled.如果banner_button_activate 为真,则必须填写banner_button_title 和banner_button_url。
  2. But if it is false it doesn't matter if it is full or not.但如果它是假的,它是否已满都没有关系。

I did number 1, but when it comes to number 2, I get the error in the title.我做了 1 号,但是当谈到 2 号时,我得到了标题中的错误。 example例子

NOT NULL constraint failed: appearance_banner.banner_button_url models.py NOT NULL 约束失败:appearance_banner.banner_button_url models.py

class banner(models.Model):
    banner_name = models.CharField(max_length=200,primary_key=True)
    banner_image = models.ImageField(("Banner resmi"), upload_to="media/images/site/banner",help_text="1770x550 boyutunda resim önerilmektedir.")
    
    banner_title = models.CharField(max_length=100,null=True,blank=True)
    banner_title_activate = models.BooleanField(default=True)
    
    banner_description = models.TextField(null=True,blank=True)
    banner_description_activate = models.BooleanField(default=True)
    
    banner_button_title = models.CharField(max_length=50,null=True,blank=True)
    banner_button_url = models.SlugField(null=True,blank=True)
    banner_button_activate = models.BooleanField(default=True)
    
    banner_button2_title = models.CharField(max_length=50,null=True,blank=True)
    banner_button2_url = models.SlugField(null=True,blank=True)
    banner_button2_activate = models.BooleanField(default=True)
    
    banner_order = models.IntegerField(editable=True,default=1,blank=False,null=False,verbose_name="Sıra")  
    banner_status = models.CharField(max_length=100,choices=STATUS,verbose_name="Banner Statüsü")

    def __str__(self):
        return self.banner_title

    def delete(self, *args, **kwargs):
        self.banner_image.delete()
        super(banner, self).delete(*args, **kwargs)

    def clean(self):
        # if (self.banner_title_activate):
        #     if not (self.banner_title):
        #         raise ValidationError({"banner_title":"Eğer bu bölüm aktifse buton title dolu olmalı.",})
        
        if not (self.banner_button_title and self.banner_button_url and self.banner_button_activate):
            print("selam")
            print(self.banner_button_url)
            if None == self.banner_button_title and None == self.banner_button_url and False != self.banner_button_activate:
                print("selam 3")
                raise ValidationError({"banner_button_url":"Eğera bu bölüm aktifse buton url dolu olmalı.","banner_button_title":"Eğer bu bölüm aktifse button title dolu olmalı."})
            elif (None == self.banner_button_url and True == self.banner_button_activate):
                print("selam 2")
                raise ValidationError({"banner_button_url":"Eğer bu bölüm aktifse button url dolu olmalı."})
            elif None == (self.banner_button_title) and False != self.banner_button_activate:
                raise ValidationError({"banner_button_title":"Eğer bu bölüm aktifse button title dolu olmalı."})
        else:
            print("--------------")
            print(self.banner_button_url)

I solved the problem.我解决了这个问题。 I think my mistake was very simple.我认为我的错误非常简单。 python manage.py makemigrations python manage.py migrate Run the commands in order. python manage.py makemigrations python manage.py migrate 依次运行命令。 I hope it works for you too我希望它也适合你

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM