Size: a a a

Django [ru] #STAY HOME

2020 August 06

t

tapik in Django [ru] #STAY HOME
Добрый вечер, подскажите как оптимально можно получить обновляемые поля (то есть получить только те поля которые изменяются по отношению к существующему объекту), в update методе класса RetrieveUpdateDestroyAPIView из DRF?
источник

ИG

Илья Grin in Django [ru] #STAY HOME
tapik
Добрый вечер, подскажите как оптимально можно получить обновляемые поля (то есть получить только те поля которые изменяются по отношению к существующему объекту), в update методе класса RetrieveUpdateDestroyAPIView из DRF?
В сериализаторе переопределить метод to_representation(obj). Он возвращает нужные поля. В нем доступно свойство self.validated_data - поможет проверить какие поля изменяются.
источник

t

tapik in Django [ru] #STAY HOME
Илья Grin
В сериализаторе переопределить метод to_representation(obj). Он возвращает нужные поля. В нем доступно свойство self.validated_data - поможет проверить какие поля изменяются.
в общем просто сравниваю два питоновских списка, через множества на изменения значений, один из validate_data, другой из объекта
источник

t

tapik in Django [ru] #STAY HOME
tapik
в общем просто сравниваю два питоновских списка, через множества на изменения значений, один из validate_data, другой из объекта
и получаею имена изменных полей
источник

t

tapik in Django [ru] #STAY HOME
tapik
в общем просто сравниваю два питоновских списка, через множества на изменения значений, один из validate_data, другой из объекта
class DictDiffer(object):
   def init(self, current_dict, past_dict):
       self.current_dict, self.past_dict = current_dict, past_dict
       self.set_current, self.set_past = set(current_dict.keys()), set(past_dict.keys())
       self.intersect = self.set_current.intersection(self.set_past)
   def added(self):
       return self.set_current - self.intersect
   def removed(self):
       return self.set_past - self.intersect
   def changed(self):
       return set(o for o in self.intersect if self.past_dict[o] != self.current_dict[o])
   def unchanged(self):
       return set(o for o in self.intersect if self.past_dict[o] == self.current_dict[o])
источник

ИG

Илья Grin in Django [ru] #STAY HOME
Можно и так. Если сериализатор подключить
источник
2020 August 07

ИG

Илья Grin in Django [ru] #STAY HOME
Но здесь нет явного сравнения значений. Просто выводит значения формально изменяемых полей
источник

AD

Alex Dem in Django [ru] #STAY HOME
Илья Grin
Но здесь нет явного сравнения значений. Просто выводит значения формально изменяемых полей
есть такой прикольный тул, обычно покрывает большую часть подобных кейсов
https://django-model-utils.readthedocs.io/en/latest/utilities.html#field-tracker
источник

AD

Alex Dem in Django [ru] #STAY HOME
если в 2 словах и по-простому, то это интерфейс поверх модели предоставляющий данные об измененных полях
источник

t

tapik in Django [ru] #STAY HOME
Илья Grin
Можно и так. Если сериализатор подключить
спасибо)
источник

t

tapik in Django [ru] #STAY HOME
Alex Dem
есть такой прикольный тул, обычно покрывает большую часть подобных кейсов
https://django-model-utils.readthedocs.io/en/latest/utilities.html#field-tracker
))) бля
источник

t

tapik in Django [ru] #STAY HOME
мне это и нужо
источник

AD

Alex Dem in Django [ru] #STAY HOME
Илья Grin
Можно и так. Если сериализатор подключить
а что тут происходит? :D
источник

A

Andrey in Django [ru] #STAY HOME
Илья Grin
Можно и так. Если сериализатор подключить
Лол
источник

A

Andrey in Django [ru] #STAY HOME
Найс питон знаем
источник

А

Алексей in Django [ru] #STAY HOME
Илья Grin
Можно и так. Если сериализатор подключить
мощно закольцовано, но не взлетит
источник

N

Nire in Django [ru] #STAY HOME
tapik
Добрый вечер, подскажите как оптимально можно получить обновляемые поля (то есть получить только те поля которые изменяются по отношению к существующему объекту), в update методе класса RetrieveUpdateDestroyAPIView из DRF?
Написать сериализаторы разные для разных штук

https://m.habr.com/ru/post/306538/

Привык по этому гайду делать
источник

t

tapik in Django [ru] #STAY HOME
спасибо, уже сделал как разность словарей
источник

N

Nire in Django [ru] #STAY HOME
Народ, подскажите, какие есть крутые бекенды для темплейтов? Помимо жинжи
источник

N

Nire in Django [ru] #STAY HOME
Pug какой-нибудь например
источник