2014-09-04 5 views
0

Извините, если заголовок трудно понять, я не могу придумать краткое описание этого. В моем проекте Django у меня есть пять моделей, ComputingObject, Laptop, Desktop, HardDrive и SanitizationMethod. Они связаны как таковые:Настройка выбора по умолчанию для модели в интерфейсе администратора Django

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) 

Рабочий стол и HardDrive также расширяют ComputingObject.

Так что в интерфейсе администратора при создании нового экземпляра любого из трех детей ComputingObject sanitize_method отображается как раскрывающееся (выберите) поле. В моем проекте есть небольшая горстка SanitizationMethod s в базе данных. Я хочу, чтобы это выпадающее меню было по умолчанию для определенного (другого) выбора для каждого из трех детей ComputingObject. Например, Desktop может по умолчанию «Удалить жесткие диски», HardDrive будет «Degauss and destroy» и т. Д. Есть ли способ сделать это с помощью django?

Поверхность кажется такой же простой, как переопределение поля sanitize_method для каждого из трех детей, и в каждом случае помещает defualt= x, но django запрещает переопределение родительских полей, поэтому этот подход не будет работать.

Я в тупике. Кто-нибудь знает, как это сделать (или если это возможно)?

ответ