Подтвердить что ты не робот

Модель внешнего ключа Django

Как получить тип модели внешнего ключа?

Пример:

class Category(models.Model):
    name = models.CharField(max_length = 100)

class SubCategory(models.Model):
    category = models.ForeignKey(Category)
    title = models.CharField(max_length = 100)

Я хочу получить категорию модели в подкатегории.

Как я могу это сделать?

4b9b3361

Ответ 1

Try:

subcategory = SubCategory.objects.get(pk=given_pk)
subcategory.category

EDIT:

subcategory._meta.get_field('category').rel.to

Ответ 2

ForeignKeys - это объекты ReverseSingleRelatedObjectDescriptor. Итак, с чем вы действительно работаете. Вы получите это, если вы запустите type(SubCategory.category). Отсюда вы можете использовать два способа получения актуального класса/модели.

SubCategory.category.field.rel.to  # <class 'path.to.Model'>
SubCategory.category.field.rel.to.__name__  # 'Category'

# or these will do the same thing

SubCategory._meta.get_field('category').rel.to
SubCategory._meta.get_field('category').rel.to.__name__

Если вы не знаете имя атрибута до времени выполнения, используйте getattr(SubCategory, attributeNameVariable), чтобы получить свой объект ReverseSingleRelatedObjectDescriptor для этого поля ForeignKey.