说我有这两种模式:
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实例,但我不能假设我正在使用的对象是一个项目实例。我只能假设它上面有一个或多个相关模型,我需要处理它。
现在我设法使用相关的管理器(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']
答案 0 :(得分:1)
解决方法是将related_name
添加到:
project = models.ForeignKey(Project, related_name='project')
然后project_obj.project
难怪ProjectUpdate的哪个字段与之相关。因此,通常添加一个与该字段名称相同的related_name
。