3

我正在为我的模型使用 Django 1.7 和 django-polymorphic

class ReferenceItem(PolymorphicModel):
    created_at = models.DateTimeField(_('date created'), auto_now_add=True, db_index=True)
    updated_at = models.DateTimeField(_('date modified'), auto_now=True, db_index=True)
    uuid = UUIDField(auto=True, unique=True)
    description = models.CharField(max_length=255)

class OrderItem(ReferenceItem):
    order = models.ForeignKey('Order', related_name='items')
    sku = models.CharField(max_length=255)
    quantity = models.IntegerField()
    unit_price = models.DecimalField(max_digits=10, decimal_places=2)
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    tax_rate = models.DecimalField(max_digits=3, decimal_places=2)
    commission_rate = models.DecimalField(max_digits=3, decimal_places=2)

当我运行时,makemigrations我得到了这个错误:

raise InvalidBasesError("Cannot resolve bases for %r\nThis can happen if you are inheriting models from an app with migrations (e.g. contrib.auth)\n in an app with no migrations; see https://docs.djangoproject.com/en/1.7/topics/migrations/#dependencies for more" % new_unrendered_models)
django.db.migrations.state.InvalidBasesError: Cannot resolve bases for [<ModelState: 'orders.OrderItem'>]
This can happen if you are inheriting models from an app with migrations (e.g. contrib.auth)

我已经通过了 django,但仍然不知道问题是什么。

4

2 回答 2

6

我猜这与多态包无关。

我所做的修复它是注释掉我的应用程序,留下内置的 django 应用程序,运行./manage.py migrate以迁移系统应用程序,然后取消注释我的应用程序,然后运行./manage.py makemigrations

于 2014-09-15T23:53:45.820 回答
4

你也可以试试这个:

1)将migrations目录添加到有问题的应用程序(orders在这种情况下)。

mkdir /path/to/your/app/migrations

2)添加__init__.py到同一个迁移目录。

touch /path/to/your/app/migrations/__init__.py

3) 运行python manage.py makemigrations <yourapp>

4) 如果幸运的话,可以单独或整体迁移任何其他应用程序。

那应该可以解决它。与依赖注释掉任何已安装的应用程序相比,它更不容易出错和hacky,这并不是真正一致或可重现的。

于 2017-02-16T21:08:26.300 回答