簡體   English   中英

如何在Django中建模(繼承的模型,其中每個繼承的模型都有唯一的方法)

[英]How to model this in django (inherited model, where each inherited model has a unique method)

如何在Django中建模:

1)擁有制造商的基礎網絡

2)在每個網絡下,他們可能是幾個分銷商

3)系統的用戶可以通過分銷商訪問商品

4)如果用戶通過分銷商訪問商品,我們希望該商品被翻譯,每個制造商都有自己的翻譯

class Manufacturer(models.Model):
    networkname = models.CharField(max_length=128)

    class Meta:
        proxy = True

class Distributor(models.Model):
    man = models.ForeignKey(Manufacturer)

class ManuType1(Manufacturer):
    def translate(self, str):
        return 'translate'

class ManuType2(Manufacturer):
    def translate(self, str):
        return 'translate'

在這種情況下,我們將請求某個分銷商。 我們確定該分銷商,並希望稱其為分銷商翻譯方法。 這看起來像是在Django中建模的方式(我敢肯定有很多方法可以做到這一點),所以任何輸入/反饋都是有用的。

我遇到問題的地方(也許不太了解python)被分配了ManuType1的Distributor。如何在運行時調用translate函數?

這可能是使用其他術語的一種經過充分研究的模式,只是不確定如何准確地表達它。

如果dist是Distributor的實例,則可以執行dist.man來獲取Manufacturer實例。 由於多表繼承在Django中的工作方式,您需要將Manufacturer上存在的OneToOneField訪問到子類實例。 問題在於找出哪個子類實例存在。 通過將子類的ContentType存儲在Manufacturer實例中,可以使此操作更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM