Try:
subcategory = SubCategory.objects.get(pk=given_pk)
subcategory.category
EDIT:
subcategory._meta.get_field('category').rel.to
For Django>=2.0
>>> SubCategory._meta.get_field('category').remote_field.model
>>> 'my_app.models.Category'
To get the model name use the __name__ class property.
>>> SubCategory._meta.get_field('category').remote_field.model.__name__
>>> 'Category'
ForeignKeys are ReverseSingleRelatedObjectDescriptor objects. So that's what you are really working with. You'll get that if you run type(SubCategory.category). From here you can use two ways to get the actual Class/Model referred to.
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__
If you don't know the attribute name until run-time, then use getattr(SubCategory, attributeNameVariable) to get your ReverseSingleRelatedObjectDescriptor object for that ForeignKey field.
also for django > = 2.0
>>> SubCategory._meta.get_field('category').related_model
>>> <class 'my_app.models.Category'>
>>> SubCategory._meta.get_field('category').related_model._meta.model_name
>>> 'category'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With