2012-03-30 37 views
0

我有Django的管理通过在线显示一个相当简单的外键关系:无线电选择模型中的管理员选择的许多默认值

# models 
class Profile(models.Model): 
    name = models.CharField(max_length=30) 

class EmailAddress(models.Model): 
    address = models.EmailField() 
    is_default = models.BooleanField() 

# admins 
class ProfileAdmin(admin.ModelAdmin): 
    class EmailAddressInline(admin.TabularInline): 
     model = EmailAddress 

    inlines = (EmailAddressInline,) 

我只是希望能够只选择其中一个的电子邮件地址为is_default,使用管理页面上的单选按钮。

这可能吗?

回答

0

我认为这可能是一个糟糕的设计情况。您应该在配置文件表中存储默认电子邮件的标识,以便您可以在数据库和程序级别确保一个配置文件的两个电子邮件地址不会被设置为默认值。给它一个想法来改变你的数据库结构。

+0

但是,如何在管理员中显示该内容?我期望为非开发人员提供一个非常好用且易于使用的管理站点,以供数据录入。 – 2012-03-30 23:25:48

+0

如果你使用我的设计,它不会影响你的用户界面,你可以实现你想要的。有了这个设计,我不确定。我对django不熟悉,我使用symfony2,它与django有着非常相似的原理,并且在symfony2中思考我可以使用我的设计实现这个目标,但是我无法使用你的设计。这就是我所能提供的帮助。如果两个电子邮件将默认为一个配置文件(可以说因为一个错误)呢?所以我真的想说服你改变。 – 2012-03-30 23:31:10

+0

相信我,我已经尝试了这种方法。不幸的是,Django的管理系统播放起来不太好。我问这的唯一原因是因为它_does not_工作有'Person.default_email_address'和'Person.email_addresses'。没有办法在管理员中很好地显示它。 – 2012-03-30 23:33:41