【问题标题】:Setting default dropdown selection for model in Django admin interface在 Django 管理界面中为模型设置默认下拉选择
【发布时间】:2014-10-29 07:00:11
【问题描述】:

对不起,如果标题难以理解,我想不出一个简洁的方式来表达这个。 在我的 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 和 HardDrive 也扩展了 ComputingObject。

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

从表面上看,这似乎就像为三个孩子中的每一个覆盖 sanitize_method 字段一样简单,并将 defualt= x 放入每个字段中,但 django 不允许覆盖父字段,因此这种方法行不通。

我被难住了。有谁知道如何做到这一点(或者甚至可能)?

【问题讨论】:

    标签: python django model admin


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 2014-08-25
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多