如何在Django上修复“没有这样的表:PurchaseHistory_purchasehistory” /为什么没有要迁移的东西?

时间:2019-08-22 01:00:15

标签: python django django-models django-2.2

我收到错误no such table: PurchaseHistory_purchasehistory

我尝试了makemigrations并进行迁移,并清除了pycache并删除了迁移均无济于事。我有什么办法可以阻止过去的所有迁移并再次从头开始进行makemigrations?

models.py
class PurchaseHistory(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="purchase_history")
    is_one_invested = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

    class Meta:
        app_label = 'PurchaseHistory'
payments/views.py
def charge(request):
    if request.method == 'POST':
        charge = stripe.Charge.create(
            amount=500,
            currency='usd',
            description='A Django charge',
            source=request.POST['stripeToken']
        )
        if request.user.is_authenticated:
            if PurchaseHistory.objects.filter(user=request.user).exists():
                request.user.purchase_history.is_one_invested = True
                request.user.purchase_history.save()

        return render(request, 'charge.html')

应该对我的数据库进行更改,但是在我看来,我的迁移未正确添加我的模型。我知道我做错了事,我希望有人向我展示如何解决此问题。我查看了许多类似的问题,并尝试了许多答案,但没有任何效果。

我的模型存在于我的主项目文件夹中,并且视图位于payments / views.py中,我尝试将模型放入我的支付应用程序,但仍然无法使用。在检查我的数据库后,似乎根本没有与模型相关的东西。我在主应用程序和付款应用程序中创建了新的迁移文件夹,并向两者都添加了一个空白的“ init .py”文件,makemigrations和迁移仍无法正常工作。

1 个答案:

答案 0 :(得分:0)

正在移除:

    class Meta:
        app_label = 'PurchaseHistory'

解决了我的问题。 python manage.py makemigrationspython manage.py migrate现在将PurchaseHistory添加到了我的数据库。我不知道为什么会这样。有一个很好的解释,但与此同时,这是任何处理类似问题的人的答案。