Here is the code Finished:
class Metadata(models.Model):
name = models.CharField(max_length=100, unique=True, verbose_name = _('name'))
label = models.CharField(max_length=100, verbose_name = _('label'))
METADATA_FIELD_TYPE = (
('0', 'Text (Select CharFields Values Only)'),
('1', 'Date (Select DateFields Values Only)'),
('2', 'Numeric (Select Numeric Values Only)'),
)
fieldtype = models.CharField(max_length=1, choices=METADATA_FIELD_TYPE, default='0', verbose_name = _('Field type'))
char_value = models.ManyToManyField(CharValue, blank=True, verbose_name = _('CharField Value(s)'))
date_value = models.ManyToManyField(DateValue, blank=True, verbose_name = _('DateField Value(s)'))
numeric_value = models.ManyToManyField(NumericValue, blank=True, verbose_name = _('Numeric Value(s)'))
def _value(self):
if self.fieldtype == '0':
return u'%s' % (self.char_value)
elif self.fieldtype == '1':
return u'%s' % (self.date_value)
else:
return u'%s' % (self.numeric_value)
value = property(_value)
class Meta:
verbose_name = _('metadata')
verbose_name_plural = _('metadata')
def __unicode__(self):
return u'%s' % (self.label)