如何获取多对多字段的related_name?

ama*_*ann 4 python django many-to-many django-models m2m

我正在尝试获取多对多字段的related_name.m2m-field位于模型"Group"和"Lection"之间,并在组模型中定义如下:

lections = models.ManyToManyField(Lection, blank=True)
Run Code Online (Sandbox Code Playgroud)

该字段如下所示:

<django.db.models.fields.related.ManyToManyField object at 0x012AD690>
Run Code Online (Sandbox Code Playgroud)

印刷品field.__dict__是:

 {'_choices': [],  
 '_m2m_column_cache': 'group_id',  
 '_m2m_name_cache': 'group',  
 '_m2m_reverse_column_cache': 'lection_id',  
 '_m2m_reverse_name_cache': 'lection',  
 '_unique': False,  
 'attname': 'lections',  
 'auto_created': False,  
 'blank': True,  
 'column': 'lections',  
 'creation_counter': 71,  
 'db_column': None,  
 'db_index': False,  
 'db_table': None,  
 'db_tablespace': '',  
 'default': <class django.db.models.fields.NOT_PROVIDED at 0x00FC8780>,  
 'editable': True,  
 'error_messages': {'blank': <django.utils.functional.__proxy__ object at 0x00FC
7B50>,  
                    'invalid_choice': <django.utils.functional.__proxy__ object
at 0x00FC7A50>,  
                    'null': <django.utils.functional.__proxy__ object at 0x00FC7
A70>},  
 'help_text': <django.utils.functional.__proxy__ object at 0x012AD6F0>,  
 'm2m_column_name': <function _curried at 0x012A88F0>,  
 'm2m_db_table': <function _curried at 0x012A8AF0>,  
 'm2m_field_name': <function _curried at 0x012A8970>,  
 'm2m_reverse_field_name': <function _curried at 0x012A89B0>,  
 'm2m_reverse_name': <function _curried at 0x012A8930>,  
 'max_length': None,  
 'name': 'lections',  
 'null': False,  
 'primary_key': False,  
 'rel': <django.db.models.fields.related.ManyToManyRel object at 0x012AD6B0>,  
 'related': <RelatedObject: mymodel:group related to lections>,  
 'related_query_name': <function _curried at 0x012A8670>,  
 'serialize': True,  
 'unique_for_date': None,  
 'unique_for_month': None,  
 'unique_for_year': None,  
 'validators': [],  
 'verbose_name': 'lections'}
Run Code Online (Sandbox Code Playgroud)

现在应该通过lection-instance访问该字段.所以这是通过lection.group_set

但我需要动态访问它,因此需要从某处获取related_name属性.

这里的文件中,有一张纸条,上面就可以访问ManyToManyField.related_name,但是这并不能为我莫名其妙地工作..

帮助将非常感激.提前致谢.

编辑:是否需要在我的所有模型上面放置一个类,它指定了related_name属性,因此,每个模型都有一个类似的名称?也许在这里? - > docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-name

Ber*_*ant 6

尝试:

field.related_query_name()
Run Code Online (Sandbox Code Playgroud)


Ste*_*lim 0

object.yourmanagerclass.join_table过去使用过,但请注意,这会返回带引号的字符串