Size: a a a

Django [ru] #STAY HOME

2020 June 19

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Igin
Я пробовал: clean если заюзать прямо в save(), останется все прежнее. а если переименовать свой метод в custom_clean(), он отработает, но вернет желтую страницу
    def save(self, *args, **kwargs):
       super().clean()
       self.custom_clean()
       super().save(*args, **kwargs)
а зачем тут super().clean()? Он же пуст у предка
источник

AI

Anton Igin in Django [ru] #STAY HOME
Artem Gubatenko
а зачем тут super().clean()? Он же пуст у предка
да это понятно, просто строка отчаяния ))
источник

AI

Anton Igin in Django [ru] #STAY HOME
часть исходника full_clean()
        try:
           print('clean fields')
           self.clean_fields(exclude=exclude)
       except ValidationError as e:
           print('validations')
           errors = e.update_error_dict(errors)
В общем, если указать свой clean, почему-то clean_fields перестает выбрасывать ошибки, экспепшена нет
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Igin
да это понятно, просто строка отчаяния ))
ты же писал в начале, что кидает ошибку с NoneType?
может дата не заполнена на момент проверки?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
Anton Igin
часть исходника full_clean()
        try:
           print('clean fields')
           self.clean_fields(exclude=exclude)
       except ValidationError as e:
           print('validations')
           errors = e.update_error_dict(errors)
В общем, если указать свой clean, почему-то clean_fields перестает выбрасывать ошибки, экспепшена нет
что значит почему-то, потому что ты его переписал) я ж говорю лучше клин поля
источник

AI

Anton Igin in Django [ru] #STAY HOME
Nikolay Cherniy
что значит почему-то, потому что ты его переписал) я ж говорю лучше клин поля
так я ж clean, а не clean_fields переписал
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Anton Igin
часть исходника full_clean()
        try:
           print('clean fields')
           self.clean_fields(exclude=exclude)
       except ValidationError as e:
           print('validations')
           errors = e.update_error_dict(errors)
В общем, если указать свой clean, почему-то clean_fields перестает выбрасывать ошибки, экспепшена нет
Попробуй вызвать full_clean в save методе и посмотреть, что там
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Или просто посмотри, что внутри save приходит
источник

AI

Anton Igin in Django [ru] #STAY HOME
tot samiy neizvestniy
Попробуй вызвать full_clean в save методе и посмотреть, что там
def save(self, *args, **kwargs):
       self.full_clean()
       super().save(*args, **kwargs)

То же самое
'NoneType' object has no attribute 'weekday'
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Anton Igin
def save(self, *args, **kwargs):
       self.full_clean()
       super().save(*args, **kwargs)

То же самое
'NoneType' object has no attribute 'weekday'
Посмотри, что внутрь save приходит вообще
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Anton Igin
def save(self, *args, **kwargs):
       self.full_clean()
       super().save(*args, **kwargs)

То же самое
'NoneType' object has no attribute 'weekday'
self.date пуст, а там отлавливаются только ValidationError ошибки, вот и получаешь это)
источник

AI

Anton Igin in Django [ru] #STAY HOME
А никак - до него и не дойдут данные, если clean не пустил (а он не пускает: дефолтный не пустит, т.к. поле обязательно, кастомный - потому что просто выбросится ошибка)
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Кто-нибудь пробовал для джанго в тестах подменить DJANGO_ENV??
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Anton Igin
А никак - до него и не дойдут данные, если clean не пустил (а он не пускает: дефолтный не пустит, т.к. поле обязательно, кастомный - потому что просто выбросится ошибка)
Сделай print(self.date) внутри save
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Допустим если тест кейс проверяет что при продакшн енв поведения должно быть другое
источник

AI

Anton Igin in Django [ru] #STAY HOME
Artem Gubatenko
self.date пуст, а там отлавливаются только ValidationError ошибки, вот и получаешь это)
Да не доходит до него дело )) все умирает на этапе clean()
источник

ЯК

Ярослав Коробейников... in Django [ru] #STAY HOME
Есть возмоность замокать DJANGO_ENV?
источник

AI

Anton Igin in Django [ru] #STAY HOME
tot samiy neizvestniy
Сделай print(self.date) внутри save
до принтов в save не доходит
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Anton Igin
до принтов в save не доходит
?
источник

tn

tot samiy neizvestni... in Django [ru] #STAY HOME
Если сразу после объявления save поставить принт, он не сработает?..
источник