如果标题难以理解,我很抱歉,我想不出一个简洁的方法来说明这一点。
在我的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 and HardDrive还扩展了ComputingObject。
因此,在管理界面中,当创建三个ComputingObject
子项中的任何一个的新实例时,sanitize_method将显示为下拉(选择)字段。在我的项目中,数据库中有少量SanitizationMethod
个。我想要的是让这个下拉菜单默认为三个ComputingObject
孩子中每个孩子的特定(不同)选择。例如,Desktop
可能默认为"删除硬盘驱动器",HardDrive
将"消磁和销毁"等等。有没有办法做到这一点django的?
从表面上看,它似乎很容易覆盖三个孩子中每个孩子的sanitize_method
字段,并且每个孩子都放defualt= x
,但django不允许覆盖父字段,所以这种方法赢了。工作。
我很难过。有谁知道怎么做(或者甚至可能)?
答案 0 :(得分:0)
您可能希望在子模型ModelAdmins中覆盖formfield_for_foreignkey
,参见https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey