Путь я хотел бы сделать это, чтобы просто пройти через объект «а» на классе В. Таким образом, в представлении, я хотел бы сделать:
objects = B.objects.get(user=a.user)
objects += A.objects.get(user=user)
Причина, я хотел бы сделать это таким образом, потому что это, по сути, два запроса к базе данных, один для извлечения связки объектов A и один для извлечения связки объектов B. Я не уверен, что в Django возможно получить список обоих, просто из-за того, как работает наследование базы данных.
Вы также можете использовать model inheritance. Это будет делать базовый класс для обоих объектов A и B, который содержит общие поля, а затем извлекает список базовых классов, а затем преобразует их в соответствующие типы.
Edit: В ответ на ваш комментарий, я предлагаю затем сделать базовый класс, который содержит следующую строку:
user = models.ForeignKey(User)
класса А и В могут затем наследовать от базового класса, и вы можете таким образом, в настоящее время просто получите все объекты из этого класса. Предположим, что ваш базовый класс был назван «C»:
objects = C.objects.get(user=user)
Это будет получить все С, а затем вы можете выяснить их конкретные типы, перейдя по каждому объекту в объектах и определить их тип:
for object in objects:
if object.A:
#code
if object.B:
#code
Мне нужно, чтобы это было общим, так что представление напрямую не знает, что B содержит объект типа A. Ему просто нужно дать имя модели и пользователю и создать список объектов, которыми владеет пользователь , –
Смотрите мое редактирование в моем сообщении выше. – AlbertoPL
Спасибо, я думаю, что сработает. Думаю, мне просто кажется, что я каким-то образом загрязняю объектную модель, так как концептуально каждый объект не обязательно должен иметь атрибут «пользователь», поскольку он может быть выведен без него. –