2016-01-14 119 views
0

我的Django项目有多个具有相同模型结构的应用程序。 为了避免模型文件的复制粘贴,我编写了一个generic_models文件,其中包含该结构中的抽象模型,并且每个应用程序都具有从泛型模型继承的模型。抽象模型之间的Django外键

其中两个表之间有外键。 我希望将外键定义为抽象模型中的字段。 问题是外键不能指向抽象表。

我该如何达到这个结构?

+0

很难猜测有哪些不同的应用程序做,但它仍然可能是有意义的复制他们,如果他们真的代表了完全不同的事情。否则,我认为你可以尝试GenericForeignKey:https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations –

回答

0

不知道这会起作用,但至少你可以试试。 在相关的模型名作为字符串,而不是相关的模型对象ForeignKey的定义使用,即

f_key = models.ForeignKey('your_app.Your_model')

代替

f_key = models.ForeignKey(your_app.Your_model)

,甚至可以尝试使用'self'。不知道这是否实施,但它是有道理的。

另见:

https://docs.djangoproject.com/en/1.9/ref/models/fields/#lazy-relationships

https://docs.djangoproject.com/en/1.9/topics/db/models/#be-careful-with-related-name