我有一组通用属性(例如字符串和整数类型),我想使用以下 django 模型来存储它们:
class Attribute(models.Model):
item = models.ForeignKey('Item')
class Meta:
abstract = True
@staticmethod
def get_subclass_by_type(type):
TEXT_TYPES = ["text", "string"]
INTEGER_TYPES = ["integer", "number"]
if type in TEXT_TYPES:
return TextAttribute
if type in INTEGER_TYPES:
return IntegerAttribute
class TextAttribute(Attribute):
value = models.CharField(max_length=128)
class IntegerAttribute(Attribute):
value = models.IntegerField()
我是否错过了任何干净简单的方法来直接定义子类中的类型?类似于:
class Attribute(models.Model):
item = models.ForeignKey('Item')
class Meta:
abstract = True
@staticmethod
def get_subclass_by_type(type):
<do something>
class TextAttribute(Attribute):
TYPES = ["text", "string"]
value = models.CharField(max_length=128)
class IntegerAttribute(Attribute):
TYPES = ["integer", "number"]
value = models.IntegerField()
最佳答案
您可以尝试像下面这样定义方法 get_subclass_by_type
@classmethod
def get_subclass_by_type(cls, 类型):
对于 cls.__subclasses__() 中的子类:
如果输入 subcls.TYPE:
返回子类
尚未测试此代码,但我认为它应该有效。
关于python - 在Python中确定一个合适的子类来存储特定类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22711738/