2016-01-14 158 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