我问了question earlier to programmatically identity foreignkey links.。
我发现以下代码提取了所有一对多链接:
yourModel._meta.get_all_related_objects()
我现在发现的唯一问题是,它还包括将会转到多对多链接的互联网表格。所以,如果我有以下型号,
class Model_one(models.Model):
name = models.CharField("Name", max_length=30)
people = models.ManyToManyField('Model_two', blank=True, through='Association')
代码返回Association,而不是不返回任何内容。有没有办法指定“真正的”一对多链接或以其他方式省略表格?即使我必须从返回的yourModel._meta.get_all_related_objects()中手动删除它?
另一种提问方式:如何识别/隔离实际上是“通过”表格的链接?
答案 0 :(得分:1)
您可以测试每个项目,看它是否在_meta.get_all_related_many_to_many_objects()
:
related_m2ms = MyModel._meta.get_all_related_many_to_many_objects()
for related in MyModel._meta.get_all_related_objects():
if related not in related_m2ms:
# Do something here with only one-to-many relationships
答案 1 :(得分:0)
找到一个question让我朝着正确的方向前进:
m2m_links =MyModel._meta.local_many_to_many
for r in m2m_links:
if not r.rel.through._meta.auto_created:
print r.rel.through._meta.object_name
这将给出"通过"的名称。表