【问题标题】:Django: find foreign key by classDjango:按类查找外键
【发布时间】:2013-10-18 15:59:12
【问题描述】:

我有一堆 Django 模型,它们具有指向 Foo 类对象的外键。他们为外键使用不同的名称——即它并不总是foo = models.ForeignKey(Foo);可能是bar = models.ForeignKey(Foo)。我想要一种可以检索Foo 对象的方法,而不管该字段的名称如何。逻辑是“找到指向 Foo 对象的单个 ForeignKey,并获取该对象。

这可能吗?

【问题讨论】:

  • 你能不能只指定一个@property 在所有类中都有一个通用名称?
  • @karthikr:实际上,这会很困难,因为代码将由从事不同项目的不同人编写。
  • 那么没有办法实现这个AFAIK。
  • 我同意@karthikr。拥有一个必须实现的属性的基类如何规范化外键字段的名称?通过这种方式,您可以为任何实现此字段的类提供协定,如果该属性未实现,则会引发异常。
  • @Brandon 这是我最初的想法,但随后 OP 仍然必须进入并为每个类定义属性(请注意,基类不知道确切的字段名称,这不是全面一致)

标签: python django django-models foreign-keys


【解决方案1】:

假设您有两个课程FooBarFooFoo 有一个字段 bar,它是 FooBar 的 ForeignKey。那么——

>>> print Foo.bar.field.rel.to
<class 'appname.models.FooBar'>

您也许可以编写一个方法来遍历Foo 的所有属性并找到与FooBar 模型对应的那个。

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2012-11-17
    • 2011-08-10
    • 1970-01-01
    • 2011-02-01
    • 2018-09-01
    相关资源
    最近更新 更多