繁体   English   中英

django.db.utils.ProgrammingError:关系“ogs_features_product”的“价格”列不存在

[英]django.db.utils.ProgrammingError: column "Price" of relation "ogs_features_product" does not exist

我目前正在运行 django 3.1

我正在尝试将我的 models.py 文件迁移到 postgres 数据库。 我能够进行迁移,但是当我执行 python manage.py migrate 时,出现以下错误。

以前,我有一个“价格”表,其中包括“产品”表的“产品 ID”。 在我的 models.py id 出现问题后(我之前已经将我当前的主键名称更改为 id,这导致了整个混乱),我回到了不包含“价格”的代码的先前版本桌子。 我能够跳上本地服务器和所有内容,但我无法访问管理页面中的客户,因为 Customer_ID 由于某种原因不存在(此外,由于“价格”表错误而无法迁移!)

他们是一种完全清理所有迁移的方法。

模型.py文件

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

#strong entities + many-to-one + many-to-many
class Customer(models.Model):
    Customer_ID = models.CharField(max_length = 9, primary_key = True)
    addressID = models.ManyToManyField('Address')
    First_name = models.CharField(max_length = 20, null = True)
    Middle_initial = models.CharField(max_length = 1, null = True)
    Last_name = models.CharField(max_length = 20, null = True)
    Account_Balance = models.FloatField(null = True)
    def __str__(self):
        return self.First_name + ' ' + self.Last_name

class Address(models.Model):
    Address_Title = models.CharField(max_length = 20, null = True)
    addressID = models.CharField(max_length = 9, primary_key = True)
    Street_number = models.CharField(max_length = 20, null = True)
    Street_name = models.CharField(max_length = 20, null = True)
    Apartment_number = models.CharField(max_length = 5, null = True)
    zipcode = models.CharField(max_length = 5, null = True)
    def __str__(self):
        return self.Address_Title

class Credit_Card(models.Model):
    Credit_Card_Number = models.CharField(max_length = 16, primary_key = True)
    CVV = models.DecimalField(decimal_places = 0, max_digits = 4, null = True)
    Expiration_Date = models.CharField(max_length = 10, null = True)
    Customer_Name = models.ForeignKey('Customer', on_delete=models.CASCADE, null = True)
    addressID = models.ManyToManyField('Address')
    def __str__(self):
        return self.Credit_Card_Number

class Order(models.Model):
    STATUS = (('Pending', 'Pending'), ('Out for delivery', 'Out for delivery'),('Delivered', 'Delivered'))
    Order_Number = models.CharField(max_length = 10, primary_key = True)
    Customer_Name = models.ForeignKey('Customer', on_delete=models.CASCADE, null = True)
    Credit_Card_Number = models.OneToOneField('Credit_Card', on_delete=models.CASCADE, null = True)
    Total_Price =  models.FloatField(null = True)
    status = models.CharField(max_length = 200, null = True, choices = STATUS)
    def __str__(self):
        return self.status

class Grocery_Store(models.Model):
    Grocery_Store_ID = models.CharField(max_length = 10, primary_key = True)
    addressID = models.ForeignKey('Address', on_delete=models.CASCADE)
    Grocery_Store_Name = models.CharField(max_length = 20)
    Warehouse = models.ManyToManyField('Warehouse')
    def __str__(self):
        return self.Grocery_Store_Name

class Product(models.Model):
    CATEGORY = (('Food', 'Food'), ('Drink', 'Drink'))
    Product_ID = models.CharField(max_length = 10, primary_key = True)
    Product_Name = models.CharField(max_length = 100, null = True)
    Quantity = models.IntegerField(null = True)
    Size = models.FloatField(null = True)
    Category = models.CharField(max_length = 10, null = True, choices = CATEGORY)
    Nutritional_info = models.CharField(max_length = 200)
    Product_Image = models.ImageField(null = True, blank = True)
    Grocery_Store = models.ForeignKey('Grocery_Store', on_delete=models.CASCADE, null = True,blank = True)
    Warehouse = models.ForeignKey('Warehouse', on_delete=models.CASCADE, null = True ,blank = True)
    Supplier = models.ForeignKey('Supplier', on_delete=models.CASCADE, null = True)
    def __str__(self):
       return self.Product_Name
    @property
    def imageURL(self):
        try:
            url = self.Product_Image.url
        except:
            url = ''
        return url

class Supplier(models.Model):
    Supplier_ID = models.CharField(max_length = 9, primary_key = True)
    addressID = models.ForeignKey('Address', on_delete=models.CASCADE)
    Supplier_Name = models.CharField(max_length = 20)
    def __str__(self):
        return self.Supplier_Name

class Warehouse(models.Model):
    Warehouse_ID = models.CharField(max_length = 10, primary_key = True)
    addressID = models.ForeignKey('Address', on_delete=models.CASCADE, null = True)
    Warehouse_Name = models.CharField(max_length = 20)
    Size = models.FloatField(null = True)
    available_space = models.FloatField(null = True)
    #Grocery_Store_ID = models.ForeignKey('Grocery_Store', on_delete=models.CASCADE)
    def __str__(self):
        return self.Warehouse_Name

class Staff_Member(models.Model):
    Staff_ID = models.CharField(max_length = 9, primary_key = True)
    addressID = models.ForeignKey('Address', on_delete=models.CASCADE)
    Name = models.CharField(max_length = 20)
    #Phone_Number = models.CharField(max_length = 15)
    Job_title = models.CharField(max_length = 15)
    Grocery_Store_ID = models.ForeignKey('Grocery_Store', on_delete=models.CASCADE)
    def __str__(self):
        return self.Name
  • 对于 PostgreSQL,最好一次性删除所有迁移并清除数据库,然后继续执行。

在终端中运行这些 -

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc"  -delete

然后删除数据库。

参考这个 - https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM