Not null constraint failed django with clean function

Я получаю ошибку, которую вы видите в заголовке. моя цель 1)если banner_button_activate true, то banner_button_title и banner_button_url должны быть заполнены. 2) Но если это false, то не имеет значения, заполнены они или нет. Я сделал номер 1, но когда дело доходит до номера 2, я получаю ошибку в заголовке. пример NOT NULL constraint failed: 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)

Я решил эту проблему. Я думаю, что моя ошибка была очень простой.

python manage.py makemigrations
python manage.py migrate

Выполните команды по порядку. Надеюсь, это сработает и для вас

Вернуться на верх