【发布时间】:2014-10-29 07:00:11
【问题描述】:
对不起,如果标题难以理解,我想不出一个简洁的方式来表达这个。
在我的 Django 项目中,我有五个模型,ComputingObject、Laptop、Desktop、HardDrive 和 SanitizationMethod。它们是这样链接的:
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 不允许覆盖父字段,因此这种方法行不通。
我被难住了。有谁知道如何做到这一点(或者甚至可能)?
【问题讨论】: