Модель с родовыми отношениями.
Я хочу MyModel.objects.filter () и сделать что-то, чтобы добавить список, содержащий объекты, где их родовые отношения - это его строка из MyModel.objects.filter ()
Я хочу попробовать сделать это одним запросом, если это возможно. Я использую MySQL, если это что-то повлияет.
Чтобы уточнить, я хочу
list_of_my_models = MyModel.objects.filter()
тогда сделай что-нибудь, чтобы я смог
for my_model in list_of_my_models:
for related_my_model in my_model.related_my_models:
// do something with related_my_model
Я пытался использовать OuterRef в аннотации с подзапросом, но получил ошибку.
"Выражение содержит смешанные типы. Вы должны установить поле output_field." Когда я захожу на страницу, которая его использует.
class MyModel(models.Model):
x1= models.CharField(max_length=100)
x2= models.CharField(max_length=255, blank=True)
x3= models.CharField(max_length=255, blank=True)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.IntegerField()
content_object = GenericForeignKey()
def custom_models(object):
my_models= MyModel.objects.filter(object_id=OuterRef('pk'), content_type=ContentType.objects.get(model='mymodel', app_label='app_my_model'))
return MyModel.objects.filter(
object_id=object.pk,
content_type=ContentType.objects.get_for_model(object)
).annotate(related_my_models=Subquery(my_models))
Так есть ли способ исправить это или есть другой способ достичь желаемого результата?