Size: a a a

Django [ru] #STAY HOME

2020 January 17

b

brestows in Django [ru] #STAY HOME
A V
Оно не должно быть в defaults
что именно ? поле users?
источник

AV

A V in Django [ru] #STAY HOME
Поле user
источник

b

brestows in Django [ru] #STAY HOME
это модель:
https://hastebin.com/wifivexemu.py
записываю вот так:

ProfileSettings.objects.update_or_create(user=request.user, **d,
                                                                       defaults=default_settings)

где d это:
{'hide_without_email': True, 'hide_without_phone': True, 'hide_without_contact_info': True, 'is_group': True, 'group_attribute': <Attribute: displayName>, 'call_to': True}

а это default_settings:
{'is_group': False, 'group_attribute': None, 'hide_without_email': False, 'hide_without_phone': False, 'hide_without_contact_info': False, 'pagination': False, 'pagination_size': <PageSize.full: -1>, 'call_to': False}
источник

b

brestows in Django [ru] #STAY HOME
я ведь логику правильно понимаю, что я не передал параметр, то он берется из defaults
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
brestows
я ведь логику правильно понимаю, что я не передал параметр, то он берется из defaults
а если передал и там, и там - то тоже из defaults
источник

b

brestows in Django [ru] #STAY HOME
Pavel Zagrebelin
а если передал и там, и там - то тоже из defaults
вот оно что
источник

b

brestows in Django [ru] #STAY HOME
получается что defaults перетрет все
источник

b

brestows in Django [ru] #STAY HOME
но даже так, поидее не должно быть ошибки, тогда просто запишутся в базу дефолтные параметры
источник

b

brestows in Django [ru] #STAY HOME
наверно проще сделать default_settings.update(d) и только их передать
источник

AV

A V in Django [ru] #STAY HOME
Те, которые ты передаешь не в дефаултс, используются для ПОИСКА записи, которую обновлять. А новые данные лежат в дефаултсах. А так как ты вне дефолтов передаешь изменённые поля, оно не находит старую запись и пытается родить новую.
источник

AV

A V in Django [ru] #STAY HOME
Вне дефолтов кроме user ничего и быть не должно в этой ситуации.
источник

b

brestows in Django [ru] #STAY HOME
A V
Те, которые ты передаешь не в дефаултс, используются для ПОИСКА записи, которую обновлять. А новые данные лежат в дефаултсах. А так как ты вне дефолтов передаешь изменённые поля, оно не находит старую запись и пытается родить новую.
Спасибо. теперь понятно
источник

PZ

Pavel Zagrebelin in Django [ru] #STAY HOME
brestows
наверно проще сделать default_settings.update(d) и только их передать
Я вообще не понимаю, что ты хочешь сделать.
источник

b

brestows in Django [ru] #STAY HOME
Pavel Zagrebelin
Я вообще не понимаю, что ты хочешь сделать.
обновить запись в бд)
источник

AV

A V in Django [ru] #STAY HOME
brestows
наверно проще сделать default_settings.update(d) и только их передать
Да. Кроме user
источник

b

brestows in Django [ru] #STAY HOME
A V
Да. Кроме user
Да юзера передать отдельным полем, а изменные данные в defaults . Спасибо я понял где косячил.
источник

b

brestows in Django [ru] #STAY HOME
сча проверю
источник

b

brestows in Django [ru] #STAY HOME
A V
Да. Кроме user
Да, все так как я хотел. Спасибо большое за то что растолковали
источник

ДШ

Дмитрий Шепелев in Django [ru] #STAY HOME
Товарищи, а что вы используете для рекурсивного отображения сериализаторов?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ну как вариант использовать SerializerMethodField
источник