【发布时间】:2014-05-13 18:54:38
【问题描述】:
在我的 django 项目中,我需要在 model.py 中使用 if 语句。其中一个应用程序将允许用户为另一个应用程序中的文档创建元数据。所以首先我创建“元数据”类来存储它的名称、标签和字段类型,这是一个选择字段。在另一个类(MetadataValues)上,我创建了一个元数据类的 ForeignKey 和一个 if 语句,如果“元数据”类中的“fieldtype”是“text (0)”,则返回一个 charfield,或者如果“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)
【问题讨论】:
标签: python django if-statement django-models