Django模型和index_together功能的问题

时间:2017-07-23 21:15:56

标签: python django django-models

使用以下INSTALLED_APPS创建一个带有应用的Django项目(将其添加到models.py!):

from django.db import models

class BaseTransaction(models.Model):
    pass

class SubscriptionTransaction(BaseTransaction):
    class Meta:
        index_together = ["id", "canceled"]

    canceled = models.BooleanField()

然后事情就这样起作用了:

$ python3 manage.py makemigrations
SystemCheckError: System check identified some issues:

ERRORS:
testprj.SubscriptionTransaction: (models.E016) 'index_together' refers to field 'id' which is not local to model 'SubscriptionTransaction'.
    HINT: This issue may be caused by multi-table inheritance.

请解释此错误的原因(此处没有多表继承)以及如何使我的代码正常工作。

使用Python 3.5.3和Python 2.7.13的Django 1.10.3会出现问题。这是一个Django错误吗?什么是解决方法?

1 个答案:

答案 0 :(得分:2)

您收到此错误,因为您使用的ID位于其他表中,这可能会产生很多问题。

但是如果您不需要BaseTransaction表,您可以将其标记为抽象,那么您可以完美地使用index_together。

class BaseTransaction(models.Model):
    class Meta:
        abstract = True