これら2つのモデルがあるとします:
class Project(models.Model):
name = models.CharField('Name', max_length=250)
class ProjectUpdate(models.Model):
project = models.ForeignKey(Project)
title = models.CharField('Title', max_length=250)
私のコードで Project インスタンスを操作しているとしますが、操作しているオブジェクトがプロジェクト インスタンスであるとは想定できません。作業が必要な関連モデルが 1 つ以上あるとしか思えません。
これで、関連マネージャー (project_obj.projectupdate_set) を使用して関連クラス名を取得できました。しかし、今必要なのは、どのフィールドが関係を作成するかを知ることです。この場合、これは ProjectUpdate の「プロジェクト」フィールドになります。
それへの参照を見つける唯一の場所はcore_filters
、関連するマネージャーのプロパティにあります: {'project__id': 1}
これなら使えるかもしれませんが、もったいないですよね。
何か案が ?
編集:
RelatedManager のプロパティは次のとおりです。
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__hash__', '__init__', '__module__', '__new__',
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', '__weakref__', '_copy_to_model', '_db',
'_inherited', '_insert', '_set_creation_counter', '_update', 'add',
'aggregate', 'all', 'annotate', 'bulk_create', 'clear', 'complex_filter',
'contribute_to_class', 'core_filters', 'count', 'create', 'creation_counter',
'dates', 'db', 'db_manager', 'defer', 'distinct', 'exclude', 'exists',
'extra', 'filter', 'get', 'get_empty_query_set', 'get_or_create',
'get_prefetch_query_set', 'get_query_set', 'in_bulk', 'instance', 'iterator',
'latest', 'model', 'none', 'only', 'order_by', 'prefetch_related', 'raw',
'remove', 'reverse', 'select_for_update', 'select_related', 'update', 'using',
'values', 'values_list']