我的 django 项目有一个情况,我需要在 model.py 中使用 if 语句。其中一个应用程序将允许用户为另一个应用程序中的文档创建元数据。所以首先我创建“元数据”类来存储它的名称、标签和字段类型,这是一个选择字段。在另一个类 (MetadataValues) 上,我创建了一个 ForeignKey 到 Metadata 类和一个 if 语句,如果“Metadata”类中的“fieldtype”是“text (0)”,则返回一个字符字段,或者如果“fieldtype”是“date( 1)”。有没有办法做到这一点?我是编程新手,所以我不知道背后的所有逻辑。
这是代码:
class Metadata(models.Model)
name = models.CharField(max_length=100, unique=True)
label = models.CharField(max_length=100)
METADATA_FIELD_TYPE = (
('0', 'Text'),
('1', 'Date'),
)
fieldtype = models.CharField(max_length=1, choices=METADATA_FIELD_TYPE, default='0')
def __unicode__(self):
return (self.label)
class MetadataValue(models.Model)
metadata = models.ForeignKey(Metadata)
if metadata.fieldtype == '0'
value = models.CharField(max_length=100)
else
value = models.DateField(auto_now=False, auto_now_add=False)
def __unicode__(self):
return (self.metadata.label)
class Document(models.Model)
name = models.CharField(max_length=100, unique=True)
metadata = models.ManyToManyField(MetadataValue)
def __unicode__(self):
return (self.name)
Run Code Online (Sandbox Code Playgroud)