Как сделать в работе в django

#python #django #django-models #orm #django-orm

#python #django #django-модели #orm #django-orm

Вопрос:

 class ModelA(models.Model):
    f = models.CharField(max_length=50)

class ModelB(models.Model):
    a = ForeignKey(ModelA)
    b = models.CharField(max_length=50)
  

Я хочу получить f в модели A, и я знаю b . Как я могу это сделать, используя django orm?

Комментарии:

1. Вопрос не совсем ясен. Вы хотите найти все ModelB экземпляры с определенным значением для их b поля, а затем найти связанные ModelA экземпляры? Если да, то это достаточно просто — что вы пробовали? (И, пожалуйста, уточните, если я неправильно понял.)

Ответ №1:

Вы можете использовать один из этих запросов:

 a_models = ModelA.objects.filter(model_b__b=known_b_value)
for a in a_models:
    print(a.f)

b_models = ModelB.objects.filter(b=known_b_value).select_related('a')
for b in b_models:
    print(b.a.f)
  

select_related во втором запросе нет строгой необходимости; он используется только для получения f значений в первом запросе, а не в одном дополнительном запросе на элемент цикла.

Ответ №2:

Это то, что вы ищете?

 ModelA.objects.filter(b=value_matching_b).values('a__f').all()