Python 如何获取多对多字段的相关名称?
我正在尝试获取多对多字段的相关名称。m2m字段位于模型“组”和“选择”之间,在组模型中定义如下: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 但是我需要动态地访问它,因此
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'