Django manytomany сигналы? [дубликат]

5
задан Serjik 19 December 2015 в 10:17
поделиться

3 ответа

Если возможно в вашем случае, вы можете ввести модель Участие , которая объединит событие и пользователя:

class Participation(models.Model):
    user = models.ForeignKey(User)
    event = models.ForeignKey(Event)

class Event(models.Model):
    users = models.ManyToManyField(User, through='Participation')

и обработает сигнал pre_save, отправленный Участие для обновления instance.event counts. Это значительно упростило бы обращение с m2m. И в большинстве случаев позже оказывается, что некоторая логика и данные лучше всего подходят для средней модели. Если это не ваш случай, попробуйте другое решение (в любом случае у вас не должно быть много путей кода, добавляющих пользователей к событиям).

8
ответ дан 13 December 2019 в 22:09
поделиться

Переопределяющее save() может не помочь, так как обновление М2М не является атомарным и происходит после сохранения экземпляра Event (я не изучал семантику delete(), но они, вероятно, похожи). Об этом шла речь в другом потоке .

Люди говорят и работают над этой проблемой. Лучшее решение, которое я видел до сих пор, это этот MonkeyPatch от gregoirecachet. Я не знаю, превратится это в 1.2 или нет. Наверное, нет, так как Release Manager (Джеймс Беннетт) пытается заставить людей уважать даты заморозки (только что прошла главная).

.
2
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: