У меня есть следующие модели:
- Заявка
- Контактная форма
- Игра
- Landing Page
- Клиент
После добавления нового Клиента я хочу добавить новые приложения под клиентом.Для этого я добавил поле m2m в разделе «Клиенты для приложений» следующим образом:
applications = models.ManyToManyField(Application, verbose_name=u'Applications')
Поскольку приложение может быть чем угодно, я обнаружил, что мне нужно использовать фреймворк Contenttype.Поэтому я поместил в модель приложения следующее:
applicationContentType = models.ForeignKey(ContentType)
applicationId = models.PositiveIntegerField()
application = generic.GenericForeignKey('applicationContentType', 'applicationId')
Таким образом, я могу добавить новые приложения, выбрав тип контента (в данном случае форму контента) и введя идентификатор существующей контактной формы.И я могу видеть это в поле m2m Клиента на странице администратора.
Однако, когда я делаю следующее, я не вижу приложение, которое я только что добавил к Клиенту:
In [2]: t = Client.objects.get()
In [3]: t.applications.all()
Out[3]: []
Ивспоминать недавно добавленный идентификатор контактной формы не очень приятно.Есть ли элегантное решение этого?Или я должен изменить свою точку зрения на проблему и сделать это по-другому?