我被困在我的數據庫設計中的一個奇怪的位置,我將不勝感激一些評論。我們正在使用django-shop來建立電子商務平臺。沒有爲產品定義的基類:django - 使用外鍵進行多表繼承
from polymorphic.polymorphic_model import PolymorphicModel
class BaseProduct(PolymorphicModel):
...
class Meta:
abstract = True
我們擴展了這個基類爲我們自己Product
對象:
class Product(BaseProduct):
# custom fields
我們現在要創建另一個對象,表示要約此Product
對象,是這樣的:
class Offer(models.Model):
product = models.ForeignKey(Product)
# more
我們希望添加這個Offer
對象的車,並在訂單中使用,就像普通Product
類。然而,Cart
和Order
類預計類型的對象Product
class Order(models.Model):
product = models.ForeignKey(Product)
所以,因爲它是,我們不能Offer
對象添加到購物車,或者將它們保存訂單。
我正在考慮將Offer
作爲Product
的一個子類,但不是在典型的多表繼承中使用OneToOne關係,而是以某種方式將其更改爲常規的ForeignKey。我甚至不確定這是否有意義,更不用說可能了。
我們的數據庫已經在生產環境中部署了許多Product
對象,而這個offer類是我們想要添加的東西,而沒有修改剩下的東西。
有關如何解決這個問題的任何想法?
這可能取決於'Offer'的行爲與購物車中'Product'的不同。它們是否足夠相似以致'Offer'可以被認爲是不同類型的'Product',並以某種方式將它們應用到當前的Product產品模型中?也許還有一些其他的繼承可以做,讓你不必改變產品,別人可能知道。 – trpt4him