gpt4 book ai didi

python - Django _meta 多对多

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:18 26 4
gpt4 key购买 nike

我正在编写一个 shell 实用程序,它允许我遍历关系,这样我就不需要返回到我的模型并查看表是如何相关的。我正在使用 _meta为了获得所有这些信息。

查看以下示例模型:

class Foo:
...

class Bar:
foo = models.ManyToManyField(Foo)

这就是我使用 _meta 时发生的情况查找 m2m 字段:

In [33]: Bar._meta.many_to_many
Out [33]: [<django.db.models.fields.related.ManyToManyField: foos>]
In [34]: Foo._meta.many_to_many
Out [34]: []

有什么东西会返回 [<django.db.models.fields.related.ManyToManyField: bars>]通过询问与 Foo 的 m2m 关系模型?

最佳答案

是的。以下将返回 RelatedObject 的列表用于模型,它与多对多字段相反。

related_objects = Foo._meta.get_all_related_many_to_many_objects()

可以使用 related_object.field 访问该字段.请注意,这仍然是一个来自 Bar 的字段 Foo , 它与 Bar._meta.many_to_many 返回的字段完全相同.

要获取指向模型或来自模型的所有多对多字段,您可以这样做:

many_to_many = (Foo._meta.many_to_many 
+ [r.field for r in Foo._meta.get_all_related_many_to_many_objects()])

关于python - Django _meta 多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com