Django外键的自定义值

时间:2011-07-28 14:50:20

标签: django django-models django-admin

我需要做的事情似乎很简单,但我已经花了很多时间试图解决它......但没有成功。 所以,我定义了一个模板模型:

class Template(models.Model):
    TYPE_CHOICES = (
                      ('campaign','Campaign email template'),
                      ('system','System email template'),
                      )
    Name = models.CharField(max_length=255)
    Type = models.CharField(max_length=255, verbose_name='Template type', choices=TYPE_CHOICES)
    Content  = models.TextField(max_length=3000)
    def __unicode__(self):
        return self.Name

我的系统电子邮件模型定义如下:

class SystemEmail(models.Model):    
    Name = models.CharField(max_length=255)
    Template = models.ForeignKey(Template,null=True)
    Subject  = models.CharField(max_length=255,help_text='Shortcodes are allowed (see bottom of the page)')    
    Content  = models.TextField(max_length=3000,)

因此,我的系统电子邮件模型中的模板字段是一个外键,将通过下拉列表来表示。但是,我不希望所有模板记录出现在该下拉列表中,而只是那些具有type ='system'的模板

那么,我应该如何告诉Django这样做?

1 个答案:

答案 0 :(得分:2)

limit_choices_to

template = models.ForeignKey(Template, null=True, limit_choices_to={'type': 'system'})

(请为您的字段使用小写名称。)