объекта модели.
def create(self, *args, **kwargs):
member = Member(
user = self.creator,
project = self,
position = 'Основатель проекта'
)
member.save()
super(Project, self).save(*args, **kwargs)
создаю проект, мембер не создается.
Что я делаю не так?
А можно полную view?
это не вьюшка, это я переписываю метод модели. Сейчас
Может быть будет лучше использовать signals? Если это создание модели, то я подозреваю, что когда создаётся ваш member, сам project ещё не создался. Вы можете попробовать поместить super на первую строку.
У меня так не очень работало, попробуй Member.objects.create()
Ну и метода create у модели нет. Там есть метод save()
Ну это отдельный метод, которые можно создать и его вызывать. Но к примеру формы и сериализаторые про такие методы ни чего не знают.
выход - сигнал?
Можно переопределить save(), в котором проверять если нет self.pk, то создавать мембера. Или сигнал
буду делать сигнал, хоть и не люблю их
А может это как-то в форме/сериализаторе можно обыграть?
мне надо чтоб оно с любой стороны работало. В том числе и с админки стандартной
Ну тогда 2 выхода. Сигнал или save переопределить.
Да. Я уже определился. Ща перекур и глупых вопросов вам по сигналам ибо не шарю)))
Но на всякий случай, попробую сбить в выбранного пути) def save(self, *args, **kwargs): created = not self.pk super().save(*args, **kwargs) if created: Member.objects.create()
Спасибо. Но я бы это расценивал как костыль.
Недавно думал об этом, метод save переопределить нужно, как Павел написал
Если не секрет, почему?
То-есть Вы тоже против сигнала?
Ну какбы есть стандартная реализация сигнала на create. Зачем тогда что-то выдумывать
Я не против, но переопределить метод save и delete красивее как помне. Зачем импортировать что-то из другого модуля (signal), если можно так
Можно конечно и так, зависит от того что будет происходить в логике.
при создании объекта одной модели, создаем объект другой модели с фк на объект первой модели
Я так и делал
Обсуждают сегодня