24 django django-models django-forms django-admin
我如何获得外键模型类型?
例如:
class Category(models.Model):
name = models.CharField(max_length = 100)
class SubCategory(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length = 100)
Run Code Online (Sandbox Code Playgroud)
我想在SubCategory中获取类别模型.
我该怎么做?
Tom*_*ski 27
尝试:
subcategory = SubCategory.objects.get(pk=given_pk)
subcategory.category
Run Code Online (Sandbox Code Playgroud)
编辑:
subcategory._meta.get_field('category').rel.to
Run Code Online (Sandbox Code Playgroud)
JCo*_*ton 11
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__
Run Code Online (Sandbox Code Playgroud)
如果在运行时之前不知道属性名称,则使用getattr(SubCategory, attributeNameVariable)
获取ReverseSingleRelatedObjectDescriptor
该ForeignKey字段的对象.
对于Django> = 2.0
>>> SubCategory._meta.get_field('category').remote_field.model
>>> 'my_app.models.Category'
Run Code Online (Sandbox Code Playgroud)
要获取模型名称,请使用__name__
class属性.
>>> SubCategory._meta.get_field('category').remote_field.model.__name__
>>> 'Category'
Run Code Online (Sandbox Code Playgroud)
小智 5
也适用于 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'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21003 次 |
最近记录: |