在Django管理界面中为模型设置默认下拉选择

时间:2014-09-04 13:37:56

标签: python django model admin

如果标题难以理解,我很抱歉,我想不出一个简洁的方法来说明这一点。 在我的Django项目中,我有五个模型,ComputingObjectLaptopDesktopHardDriveSanitizationMethod。他们这样联系起来:

class ComputingObject(models.Model):
    #various other fields...
    sanitize_method = models.ForeignKey(SanitizationMethod)

class Laptop(ComputingObject):
    #laptop-related fields

class SanitizationMethod(models.Model):
     description = models.CharField(max_length=100)

Desktop and HardDrive还扩展了ComputingObject。

因此,在管理界面中,当创建三个ComputingObject子项中的任何一个的新实例时,sanitize_method将显示为下拉(选择)字段。在我的项目中,数据库中有少量SanitizationMethod个。我想要的是让这个下拉菜单默认为三个ComputingObject孩子中每个孩子的特定(不同)选择。例如,Desktop可能默认为"删除硬盘驱动器",HardDrive将"消磁和销毁"等等。有没有办法做到这一点django的?

从表面上看,它似乎很容易覆盖三个孩子中每个孩子的sanitize_method字段,并且每个孩子都放defualt= x,但django不允许覆盖父字段,所以这种方法赢了。工作。

我很难过。有谁知道怎么做(或者甚至可能)?

1 个答案:

答案 0 :(得分:0)

您可能希望在子模型ModelAdmins中覆盖formfield_for_foreignkey,参见https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey