Size: a a a

Django [ru] #STAY HOME

2020 January 14

IZ

Igor Z in Django [ru] #STAY HOME
Коллеги, а не знаете что мб когда апач выдает 404 на фаил с кириллицей, хотя в адресной строке фаил отображается нормально? apache2.2, django 1.6, wsgi
источник

🔐

🔐{% ɹoƃǝʎ %} in Django [ru] #STAY HOME
Maksim Naumov
мне нужно, чтобы туда записывалось именно системное время пользователя, а не сервера или не время определенное через TIME_ZONE = 'smth'
Тогда надо тебе через js его вытягивать и с формой через хидден инпут отправлять
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Привет

Подскажите, как в drf в DateTimeField сделать так, что если приходит None - сделать default=datetime.datetime.now() ?
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Николай Видов
Привет

Подскажите, как в drf в DateTimeField сделать так, что если приходит None - сделать default=datetime.datetime.now() ?
def validate_fieldname(self, value) в сериализаторе, например
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Pavel Zagrebelin
def validate_fieldname(self, value) в сериализаторе, например
хм, попробую
источник

IZ

Igor Z in Django [ru] #STAY HOME
Николай Видов
Привет

Подскажите, как в drf в DateTimeField сделать так, что если приходит None - сделать default=datetime.datetime.now() ?
можно сделать "Создание собственных типов полей для модели"
источник

IZ

Igor Z in Django [ru] #STAY HOME
и там реализовать свою логику
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Igor Z
можно сделать "Создание собственных типов полей для модели"
не, это выглядит слишком костыльно
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Pavel Zagrebelin
def validate_fieldname(self, value) в сериализаторе, например
Что то не сработало
  
    def validate_updated_at(self, value):
       return value if value else dt.datetime.now()
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Николай Видов
не, это выглядит слишком костыльно
если таких ситуаций будет несколько, то воплне норм
источник

IZ

Igor Z in Django [ru] #STAY HOME
Николай Видов
не, это выглядит слишком костыльно
мб, но такой инструмент предусмотрен, это не костыль
источник

MN

Maksim Naumov in Django [ru] #STAY HOME
🔐{% ɹoƃǝʎ %}
Тогда надо тебе через js его вытягивать и с формой через хидден инпут отправлять
А если так: записывать все в UTC, а когда пользователь запрашивает поле с датой, то переводить дату в его временную зону.
источник

НВ

Николай Видов in Django [ru] #STAY HOME
to_representation - для сериализации, а to_internal_value - для десериализации?
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
Николай Видов
Что то не сработало
  
    def validate_updated_at(self, value):
       return value if value else dt.datetime.now()
Ну, дебажить надо. приезжает ли сюда вообще выполненеи, что в value, и так далее. Обычно срабатывает.
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Что то не вызывается метод валидации.

В общем

class UserAnswerDeserializer(serializers.Serializer):
   uuid = fields.IntegerField()
   text = fields.CharField()
   state = fields.CharField()


class QuestionsAnswersDeserializer(serializers.Serializer):
   created_at = fields.DateTimeField()
   updated_at = fields.DateTimeField()
   uuid = fields.UUIDField()
   user_id = fields.IntegerField()
   scope = fields.CharField()
   state = UserAnswerDeserializer(many=True)
   question_text = fields.CharField()

   def validate_updated_at(self, value):
       print(value)
       return value if value else dt.datetime.now()


class AttemptsDeserializer(serializers.Serializer):
   user_id = fields.IntegerField()
   started_at = fields.DateTimeField()
   completed_at = fields.DateTimeField(default=now)
   status = fields.CharField()
   trajectory_id = fields.IntegerField()
   score = fields.FloatField()
   questions_answers = QuestionsAnswersDeserializer(many=True)

Передаю данные так:

at = serializers.AttemptsDeserializer(data=attempt)

Данные, которые туда поступают

# attempt
{'user_id': 100500, 'started_at': '2000-01-01T01:01:01', 'completed_at': '2000-01-01T02:01:01', 'status': 'COMPLETED', 'trajectory_id': 2, 'score': 100, 'questions_answers': [{'created_at': '2000-01-01T01:01:01', 'updated_at': None, 'uuid': '1c387ed9-0fd7-4de1-b0a4-7219780274cd', 'user_id': 100500, 'scope': 'assessment', 'state': {'uuid': 2, 'text': 'answer 2'}, 'question_text': 'question-1'}]}

Ошибка

{'questions_answers': [{'updated_at': [ErrorDetail(string='This field may not be null.', code='null')], 'state': {'non_field_errors': [ErrorDetail(string='Expected a list of items but got type "dict".', code='not_a_list')]}}]}

с последней думаю разберусь, а тут - непонятки
источник

Н

Никита in Django [ru] #STAY HOME
This field may not be null

в модели null=True поставь для поля  questions_answers
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
угу, на null проверка выполняется до кастомной валидации
источник

НВ

Николай Видов in Django [ru] #STAY HOME
Так мне надо так, что если null прилетает - сделать datetime.datetime.now
источник

Н

Никита in Django [ru] #STAY HOME
а state там прилетает словарь, вместо списка
источник

НВ

Николай Видов in Django [ru] #STAY HOME
А, лол, понял
источник