我正在創建產品ID轉換應用程序。我有兩個型號表示兩個ID風格:將第三方模塊合併到Django模型中
class Id1(models.Model):
number = models.CharField(max_length=10)
converted = models.CharField(max_length=13)
status = models.CharField(max_length=5) # validation status
error = models.CharField(max_length=10) # error message
def __unicode__(self):
return self.number
class Id2(models.Model):
number = models.CharField(max_length=13)
converted = models.CharField(max_length=10)
status = models.CharField(max_length=5) # validation status
error = models.CharField(max_length=10) # error message
def __unicode__(self):
return self.number
有一個第三方Python(非Django的)模塊,我想納入Django模型有兩個原因:
- 它已經提供了我需要的轉換功能
- 我想在轉換中使用面向對象的方法 - 我創建了一個封裝了該實例的相關數據和方法的類的實例(例如Id1)。
第三方模塊具有若干字段,並且每個方法以下類:
- 類ID(對象)
- 類Id1的(Id)的
- 類Id2的(Id)的
...以及類方法調用的以下頂級函數:
- 高清驗證
- 高清轉換
- 高清calculate_checksum
- 高清潔淨
不過,我不希望在數據庫中的第三方模塊的屬性;每個數據庫表應該只包含Django模型字段(數字和轉換)。
這是如何實現的?如果這是不可能的,有什麼其他的方法來解決這個問題?將邏輯委託給視圖?
[編輯]我忘了補充一點,我想使用模塊方法來初始化一些字段,如「轉換」,「狀態」和「錯誤」。任何想法如何做到這一點?
這是不是很清楚你在這裏問什麼。你想使用現有的代碼來進行轉換/計算嗎?那麼你爲什麼不從模型的方法中調用這些函數等呢? – UloPe 2013-05-02 12:53:59
你說得對。我忘了提及一個關鍵方面:我想將方法返回值保存爲模型字段。所以自定義的save()方法將包含模塊中的代碼,例如將Id1轉換爲Id2並將結果保存在「已轉換」字段中。驗證和轉換異常會影響其他兩個字段「狀態」和「錯誤」。所有這些都在對象初始化或保存時自動發生。可能? – geeljire 2013-05-03 00:02:47