如何通过覆盖类来更改django模型中的字段类型

时间:2014-10-01 12:14:16

标签: django python-2.7 django-oscar

我在核心文件夹中有一个类,如下所示:

class AbstractLine(models.Model):
    basket = models.ForeignKey('basket.Basket', related_name='lines',
                           verbose_name=_("Basket"))

    quantity = models.PositiveIntegerField(_('Quantity'), default=1)

现在,我想覆盖此类,以便将数量PositiveIntegerField更改为DecimalField,如下所示:

from django.db import models
from django.utils.translation import ugettext_lazy as _
from oscar.apps.basket.abstract_models import AbstractLine as ModelLine

class Line(ModelLine):
    quantity = models.DecimalField(_('Quantity'), default=0.25, decimal_places=2, max_digits=3)

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

实际上,这是不可能的。请参阅此问题:In Django - Model Inheritance - Does it allow you to override a parent model's attribute?

同样适用于抽象基类,请参阅this discussion on the Django user's group

最好的办法是简单地删除基类中的字段。