Как скопировать поля m2m при копировании одной модели в другую - PullRequest
0 голосов
/ 04 июля 2019

Я могу скопировать все свойства модели, кроме полей m2m, используя сигнал post_save. QuerySet возвращает пустой при использовании тех же шагов, которые работают в оболочке, поэтому я не могу добавить поля в новый объект / модель.

signals.py

@receiver(post_save, sender=RecurringEventItem)
def create_calendar_event(sender, instance, created, **kwargs):
    if created:
        min_date = datetime.now() - timedelta(days=365)
        max_date = datetime.now() + timedelta(days=365)
        recurring_event = RecurringEventItem.objects.get(pk=instance.id)
        print(recurring_event.attendee)
        print(recurring_event.attendee.all())
        if recurring_event.attendee is not None:
            attendees = recurring_event.attendee.all()

        if instance.recurrences is not None:
            calendar_item_list = []
            recurrence_dates = list(instance.recurrences.between(min_date, max_date))
            for date in recurrence_dates:
                new_calendar_item = CalendarItem(name=instance.name, start_date=instance.start_date,
                                                 completion_date=instance.completion_date,
                                                 description=instance.description,
                                                 end_date=datetime.date(date))
                if attendees:
                    new_calendar_item.calendar_attendees.add(attendees)
                calendar_item_list.append(new_calendar_item)
            CalendarItem.objects.bulk_create(calendar_item_list)

Работает в оболочке:

test = RecurringEventItem.objects.get(pk='42f59a0ba1ac40858256a607fd8c57a3')
test_2 = test.delegated_to.all()
test_2
<QuerySet [<Contact: Test Person>]>

Результат QuerySet при запуске приложения.

<QuerySet []>

...