Ответ 1
Try:
subcategory = SubCategory.objects.get(pk=given_pk)
subcategory.category
EDIT:
subcategory._meta.get_field('category').rel.to
Как получить тип модели внешнего ключа?
Пример:
class Category(models.Model):
name = models.CharField(max_length = 100)
class SubCategory(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length = 100)
Я хочу получить категорию модели в подкатегории.
Как я могу это сделать?
Try:
subcategory = SubCategory.objects.get(pk=given_pk)
subcategory.category
EDIT:
subcategory._meta.get_field('category').rel.to
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.