Size: a a a

Django [ru] #STAY HOME

2020 May 23

YA

Y A in Django [ru] #STAY HOME
Membership.objects.filter(group=instance).delete()
       for person in person_data:
           d=dict(person)
           Membership.objects.create(group=instance, person=d['person'])


Вот так не сильно хочется делать, получается я могу удалять и создавать записи которые уже и так были
источник

YA

Y A in Django [ru] #STAY HOME
Alex Dem
да, нет, скорее всего сработает самой простой вариант
пишешь модельный сериалайзер для m2m поля
и добавляешь его в сериалайзер твоего ViewSet

m2m_field = m2m_field_serializer(source= ..., many=True)
так норм будет?
источник

YA

Y A in Django [ru] #STAY HOME
Y A
Membership.objects.filter(group=instance).delete()
       for person in person_data:
           d=dict(person)
           Membership.objects.create(group=instance, person=d['person'])


Вот так не сильно хочется делать, получается я могу удалять и создавать записи которые уже и так были
или все таки так будет лучше
источник

AD

Alex Dem in Django [ru] #STAY HOME
я бы не так делал (при условии, что все поля для m2m таблицы передаются)
источник

AD

Alex Dem in Django [ru] #STAY HOME
instance = self.get_object()
serializer = m2m_serializer(data=validated_data['m2m_field'], many=True)
if serializer.is_valid():
  instance.m2m_field.clear()
  serializer.save()  # поправил
источник

AD

Alex Dem in Django [ru] #STAY HOME
что-то такое должно получиться
источник

AD

Alex Dem in Django [ru] #STAY HOME
и мог перепутать названия методов
источник

AD

Alex Dem in Django [ru] #STAY HOME
надеюсь, на понимание сути это не повлияет :)
источник

YA

Y A in Django [ru] #STAY HOME
да я понял о чем речь, спс
источник

AD

Alex Dem in Django [ru] #STAY HOME
но надо смотреть логику приложения
при определенных моделях приложения могут возникнуть вопросы
источник

AE

A E in Django [ru] #STAY HOME
👤
Тогда почему не написал в книге что надо сделать кнопку?
type=submit,  а не submin
источник

AD

Alex Dem in Django [ru] #STAY HOME
это все хорошо, пока не пишется отдельный ендпоинт на m2m модель
источник

YA

Y A in Django [ru] #STAY HOME
я эти данные сразу одним эндпоинтом передаю
источник

YA

Y A in Django [ru] #STAY HOME
Alex Dem
instance = self.get_object()
serializer = m2m_serializer(data=validated_data['m2m_field'], many=True)
if serializer.is_valid():
  instance.m2m_field.clear()
  serializer.save()  # поправил
один фиг нужно новый дикт собирать энивей)
источник

AD

Alex Dem in Django [ru] #STAY HOME
Y A
один фиг нужно новый дикт собирать энивей)
любопытно :))
а почему?
источник

YA

Y A in Django [ru] #STAY HOME
Alex Dem
любопытно :))
а почему?
потому что 1 не передаются все поля и нужно добавлять инстанс ид, плюс второе то что он пишет мол ты мне давай ид записи а не саму запись
источник

AD

Alex Dem in Django [ru] #STAY HOME
Y A
потому что 1 не передаются все поля и нужно добавлять инстанс ид, плюс второе то что он пишет мол ты мне давай ид записи а не саму запись
погоди, m2m сериалайзер должен работать только в create режиме
источник

AD

Alex Dem in Django [ru] #STAY HOME
ну, согласно нашей модели работы это машинарии
источник

YA

Y A in Django [ru] #STAY HOME
Y A
да у меня есть поле это, вот как красиво решить узнать бы)
в крейте у меня вот так
источник

AD

Alex Dem in Django [ru] #STAY HOME
он не должен требовать id
а требует, скорее всего, потому, что ты чуть-чуть не так реализовал сериалайзер для m2m поля
источник