2016-12-31 83 views
4

我有一个新手问题,我正在寻找与Django类中的Meta类继承相关的概念。以下是模型,如果有人能帮助我,我将不胜感激。继承Django模型中的元类

class Base(models.Model): 
    code = AutoSlugField(_("Slug"), max_length=128, unique=True, 
         populate_from='name') 
    name = models.CharField(_("Name"), max_length=128, unique=True) 
    description = models.TextField(_("Description"), blank=True) 
    countries = models.ManyToManyField('Country', 
             blank=True, verbose_name=_("Countries")) 
    is_discounted = False 
    class Meta: 
     app_label = 'shipping' 
     ordering = ['name'] 
     verbose_name = _("Shipping Method") 
     verbose_name_plural = _("Shipping Methods") 


class OrderAndItemCharges(Base): 
    price_per_order = models.DecimalField(
     _("Price per order"), decimal_places=2, max_digits=12, 
     default=D('0.00')) 
    price_per_item = models.DecimalField(
     _("Price per item"), decimal_places=2, max_digits=12, 
     default=D('0.00')) 
    free_shipping_threshold = models.DecimalField(
     _("Free Shipping"), decimal_places=2, max_digits=12, blank=True, 
     null=True) 
    class Meta(Base.Meta): 
     app_label = 'shipping' 
     verbose_name = _("Order and Item Charge") 
     verbose_name_plural = _("Order and Item Charges") 

回溯:

class OrderAndItemCharges(Base): 
    File "C:\Users\AliKhan\supermarekt\market\shipping\models.py", line 46, in Or 
derAndItemCharges 
    class Meta(Base.Meta): 
AttributeError: type object 'Base' has no attribute 'Meta' 

我已经改变了类导入行为得到了与像以下。这可能会导致问题。原因是我需要缓解店铺仪表板应用程序的代码。于是我进口Django缺省的源导入Django的类和改变它象下面这样:

from django.apps.config import MODELS_MODULE_NAME 
def get_class(module_label, classname): 
    return get_classes(module_label, [classname])[0] 
def get_classes(module_label, classnames): 
    if not module_label: 
     raise ValueError(
      "Module Does Not Exists") 

    market_module_label = "%s" % (module_label) 
    market_module = _import_module(market_module_label, classnames) 
    return _pluck_classes([market_module], classnames) 
def _import_module(module_label, classnames): 
    try: 
     return __import__(module_label, fromlist=classnames) 
    except ImportError: 
     __, __, exc_traceback = sys.exc_info() 
     frames = traceback.extract_tb(exc_traceback) 
     if len(frames) > 1: 
      raise 

文件名是loading.py,我学会了从Django的奥斯卡奖。不过,我做了些微的修改,以适应我的需要。所以问题可能在这里。请协助

+0

它曾经以这种方式工作。想知道什么可能会导致这个问题... –

+0

我已经更新了我的问题上面,请看看这可能有所帮助。 –

回答