#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()