我正在创建产品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