Как получить доступ к родительской модели Django с помощью внешнего ключа

У меня эта модель:

class Cohort(models.Model):
id = models.AutoField(primary_key=True,editable=True)
origin=models.BooleanField(default=False)
title = models.CharField(max_length=200,validators=[MaxLengthValidator(100)])
email = models.ForeignKey(Userdata, on_delete=models.PROTECT,default='0',db_constraint=False)


def __str__(self):
    return self.title

class Subcohort(models.Model):
cohort_id=models.ForeignKey(Cohort,on_delete=models.PROTECT,default=0,db_constraint=False,related_name='subcohortid')
parent_id=models.ForeignKey(Cohort,on_delete=models.PROTECT,default=0,db_constraint=False,related_name='subparentid')

Из файла views.py я хочу читать данные когортной модели, используя идентификатор когорты subcohort cohort_id. Я хочу получить объект, который содержит данные когорты вместе с данными подкорт. Может ли кто-нибудь помочь? Спасибо.

Не используйте суффикс _id для внешних ключей. Внешний ключ в Django - это объект, а не id. Django заботится о связях на уровне базы данных.

У Cohort может быть несколько Subcohort, но у Subcohort может быть только один Cohort родитель.

Вы можете получить все Subcohort от Cohort по родственному имени. Ваше связанное имя - subparentid. Из которого, опять же, следует убрать суффикс 'id' и сделать его множественным, потому что когорта может иметь несколько подкогорт. Лучшее связанное_имя будет subcohorts.

# using your models
cohort = Cohort.objects.get(pk=pk)
subcohorts = cohort.subparentid.all()

РЕДАКТИРОВАНИЕ:

Если у вас есть Subcohort и вы хотите получить данные из его Cohort, вы можете сделать так:

# using your models
subcohort = Subcohort.objects.get(pk=pk)
print(subcohort.parent_id.title) # prints the cohorts title
Вернуться на верх