Использование prefetch_related_objects для негомогенных объектов с общей связью
МодельА имеет отношение "многие-к-одному" к моделиС
МодельВ имеет отношение "многие-к-одному" к моделиС
У меня есть ситуация, когда мне нужно получить доступ к связанным объектам через оба типа model_a_instance.model_c и model_b_instance.model_c, и я не хочу выполнять N дополнительных запросов. Я обнаружил, что использование prefetch_related_objects(list_of_model_a_instances + list_of_model_b_instances, 'model_c') работает так, как ожидалось. Однако, заглянув в код prefetch_related_objects, я заметил следующее.
# We assume that objects retrieved are homogeneous (which is the premise
# of prefetch_related), so what applies to first object applies to all.
first_obj = obj_list[0]
Есть ли здесь побочные эффекты, о которых я должен беспокоиться? Я заметил, что связанные экземпляры идентичны.
list_of_model_a_instances[0].model_c is list_of_model_b_instances[0].model_c
Out[1]: True
Таким образом, последующий код не должен неожиданно изменять связанные объекты, чтобы предотвратить неопределенное поведение.
Есть еще что-нибудь, о чем я должен беспокоиться?