Size: a a a

Django [ru] #STAY HOME

2021 April 15

DT

Dan Tyan in Django [ru] #STAY HOME
потому что в правилах чата запрещено выставлять фото экрана
источник

DT

Dan Tyan in Django [ru] #STAY HOME
в закрепе почитай
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
Друзья подскажите плиз, а как можно реализовать такое, есть поля модели
address_delivery = models.ForeignKey(AmlAddress, on_delete=models.SET_NULL, null=False, blank=False)
address_time_creation = JSONField('Address at the time of creating the questionnaire', blank=False, null=False,
                                 default=save_addr_to_json)

второе поле это сборка полей из первого, вот как бы при создании записи ее сформировать, думал над пресейвом но не есть хорошо, есть еще варианты или магические методы какийнить?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
думал вот таким методом но что т мне подсказывает что несработает
def save_addr_to_json(self):
   if not self.address_delivery:
       raise ValueError('AML address is not correct')
   else:
       return {
           "state": self.address_delivery.state,
           "state_en": self.address_delivery.state_en,
           "sub_street": self.address_delivery.sub_street,
           "sub_street_en": self.address_delivery.sub_street_en,
           "town": self.address_delivery.town,
           "town_en": self.address_delivery.town_en,
           "street": self.address_delivery.street,
           "street_en": self.address_delivery.street_en,
           "post_code": self.address_delivery.post_code,
           "country": self.address_delivery.country
       }
источник

DT

Dan Tyan in Django [ru] #STAY HOME
а если AmlAddress изменится ?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
и потом зачем дубоирование ?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
то связь меняем но json остается тем же
источник

DT

Dan Tyan in Django [ru] #STAY HOME
расхождение в данных нормально ?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
так как эта анкета улетает регистратору у должна хранится именно в том виде как отправили
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
в данном случае да
источник

DT

Dan Tyan in Django [ru] #STAY HOME
думал над пресейвом но не есть хорошо

почему
не хорошо ?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
ну как то не очень будет смотреться в пресейве ловить исключения и тогда уже в нем формировать поле
источник

DT

Dan Tyan in Django [ru] #STAY HOME
какое исключение ?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
Ну эту запись надо формировать только для нового объекта соответсвенно DoesNotExist
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
тоесть самый просто способ, гетом, по pk если исключение то меняем инстанс если нет то пропускаем
источник

DT

Dan Tyan in Django [ru] #STAY HOME
вариант post_save там ест флаг created
источник

DT

Dan Tyan in Django [ru] #STAY HOME
if created
  sender.objects.filter(pk=instance.pk).update(address_time_creation={<your_data>})
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
хм, посмотрю, а если save переоределить?
источник

СЧ

Сергей Чурмин... in Django [ru] #STAY HOME
а нет save меняеть будет все время
источник

DT

Dan Tyan in Django [ru] #STAY HOME
по сути тоже самое
только факт создания самому надо ловить
источник