Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取多对多字段的相关名称?_Python_Django_Django Models_Many To Many_M2m - Fatal编程技术网

Python 如何获取多对多字段的相关名称?

Python 如何获取多对多字段的相关名称?,python,django,django-models,many-to-many,m2m,Python,Django,Django Models,Many To Many,M2m,我正在尝试获取多对多字段的相关名称。m2m字段位于模型“组”和“选择”之间,在组模型中定义如下: lections = models.ManyToManyField(Lection, blank=True) 该字段如下所示: <django.db.models.fields.related.ManyToManyField object at 0x012AD690> 现在应该通过一个选择实例访问该字段。所以这是通过lection.group\u set 但是我需要动态地访问它,因此

我正在尝试获取多对多字段的相关名称。m2m字段位于模型“组”和“选择”之间,在组模型中定义如下:

lections = models.ManyToManyField(Lection, blank=True)
该字段如下所示:

<django.db.models.fields.related.ManyToManyField object at 0x012AD690>
现在应该通过一个选择实例访问该字段。所以这是通过
lection.group\u set

但是我需要动态地访问它,因此需要从某处获取相关的_name属性

在文档中,注意可以访问
ManyToManyField.related\u name
,但这对我的系统不起作用

非常感谢您的帮助。 提前谢谢

编辑:
是否需要在所有模型之上放置一个类,该类指定相关的_name属性,因此每个模型都有一个相似的名称?像这里吗?->docs.djangoproject.com/en/dev/topics/db/models/#小心相关名称

我以前使用过object.yourmanagerclass.join_table,但请注意,这会返回一个带引号的字符串

请尝试:

field.related_query_name()

您粘贴的内容基本上是:

>>> f = models.ManyToManyField(...)
>>> dir(f)
(...)
您可能需要的是获取包含该字段的实际模型类:

class MyModel(models.Model):
    my_field = models.ManyToManyField(..., related_name='some_related_name')
--然后你可以做:

>>> MyModel._meta.get_field_by_name('my_field')[0].related_query_name()
'some_related_name'

输出为“组”。。输出应该是“group_set”,这是什么意思?这一切背后的想法是,我需要将一个经文的所有关系复制到一个组,复制到另一个经文实例。。但是这应该适合所有其他对象,因此必须读取相关的名称。您能给出一个实际的例子吗?我的字段没有经理属性。谢谢你的回答。函数“related_query_name”的访问方式如下:“MyModel.\u meta.get_field_by_name('my_field')[0]。field.related_query_name()”,但输出仍然是“group”,即链接表。。但是(自动命名的)相关查询名称是“group\u set”。。你对此有什么想法吗?@amann
fs.\u meta.get\u field\u by\u name('group')[0]。get\u accessor\u name()
将返回
group\u set
。但是,您不知道Django何时会更改该API,因此如果您不更改相关名称,“%”set“。format('group')可能更合理。
>>> MyModel._meta.get_field_by_name('my_field')[0].related_query_name()
'some_related_name'