【问题标题】:Django nani and model inheritanceDjango nani 和模型继承
【发布时间】:2011-12-05 13:07:28
【问题描述】:

我使用 Django nani http://readthedocs.org/docs/django-nani/en/latest/ 并想定义两个模型(一个继承另一个):

class ItemBase(TranslatableModel):
    translations = TranslatedFields(
        name = models.CharField(max_length=40)
    )
    slug = models.SlugField(unique=True, max_length=40)
    description = models.CharField(max_length=1000)
    worth = models.PositiveIntegerField()

class EquipBase(ItemBase):
    def __init__(self, *args, **kwargs):
        super(EquipBase, self).__init__(*args, **kwargs)

    level = models.PositiveSmallIntegerField()

但是,我在使用 syncdb 时确实收到以下错误。

django.core.exceptions.ImproperlyConfigured: No TranslatedFields found on <class 'main.world.items.models.EquipBase'>, subclasses of TranslatableModel must define TranslatedFields.

解决办法是什么?

【问题讨论】:

    标签: django inheritance django-models


    【解决方案1】:

    您必须将“translations”添加到 ItemBase 的 EquipBase 中,并使用 models.Model 作为 ItemBase 的超类:

    class ItemBase(models.Model):
        slug = models.SlugField(unique=True, max_length=40)
        description = models.CharField(max_length=1000)
        worth = models.PositiveIntegerField()
    
    
    
    class EquipBase(ItemBase):
        translations = TranslatedFields(
            name = models.CharField(max_length=40)
        )
    
        def __init__(self, *args, **kwargs):
            super(EquipBase, self).__init__(*args, **kwargs)
    
        level = models.PositiveSmallIntegerField() 
    

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多