我正在使用Satchmo和Django,我正在尝试扩展Satchmo的产品模型。我想让Satchmo产品模型中的一个字段在管理员中具有默认值而不更改Satchmo的源代码。以下是Satchmo产品型号的缩写版本:
class Product(models.Model):
site = models.ForeignKey(Site, verbose_name='Site')
这是我试图扩展它...
class MyProduct(Product):
Product.site = models.ForeignKey(Site, verbose_name='Site', editable=False, default=1)
这不行,有什么想法吗?
答案 0 :(得分:1)
出于两个原因,首先,你试图覆盖类变量的方式不是它在Python中的工作方式。您只需在类中正常定义它,就像def __init__(self):
覆盖超类初始化程序一样。但是,Django模型继承根本不支持这一点。如果要添加约束,可以在save()方法中执行此操作。
答案 1 :(得分:1)
如果你真的想:
,你可能可以将其打包site_field = Product._meta.get_field('site')
site_field.editable = False
site_field.default = 1
但这是一种讨厌的习惯,可能会引发问题;可以说比直接修补Satchmo的源更难维护。
答案 2 :(得分:-2)
您无法从子类更改超类。
你有来源。使用subversion。做出改变。更新Satchmo时,请根据您的更改合并更新。