sách gpt4 ai đã đi

python - 更改 model.py 中的类名后,无需在 Django 中应用任何迁移

In lại 作者:太空宇宙 更新时间:2023-11-03 20:19:16 30 4
mua khóa gpt4 Nike

在我将class BillingAddress 的名称更改为class Address 后。并尝试了这些阶段

  1. 从应用的迁移目录中删除了所有迁移记录。

  2. 还删除了 db.sqlite3 文件。

然后,我执行了以下命令

python manage.py makemigrations core
python manage.py migrate

迁移后,不再显示插入的数据,而是显示没有要应用的迁移。 在终端

PS C:\Users\Dell\project5> python manage.py makemigrations core
Migrations for 'core':
core\migrations\0001_initial.py
- Create model Address
- Create model Coupon
- Create model Item
- Create model Order
- Create model Refund
- Create model Payment
- Create model OrderItem
- Add field items to order
- Add field payment to order
- Add field shipping_address to order
- Add field user to order
PS C:\Users\Dell\project5> python manage.py migrate
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes, core, sessions, sites, socialaccount
Running migrations:
No migrations to apply.
PS C:\Users\Dell\project5>

当我点击添加到购物车按钮时,它显示错误为

OperationalError at /add-to-cart/test-product-4/ table core_order has no column named shipping_address_id

模型.py

from django.conf import settings
from django.db import models
from django.db.models import Sum
from django.shortcuts import reverse
from django_countries.fields import CountryField

# Create your models here.
CATEGORY_CHOICES = (
('SB', 'Shirts And Blouses'),
('TS', 'T-Shirts'),
('SK', 'Skirts'),
('HS', 'Hoodies&Sweatshirts')
)

LABEL_CHOICES = (
('S', 'sale'),
('N', 'new'),
('P', 'promotion')
)

ADDRESS_CHOICES = (
('B', 'Billing'),
('S', 'Shipping')
)


class Item(models.Model):
title = models.CharField(max_length=100)
price = models.FloatField()
discount_price = models.FloatField(blank=True, null=True)
category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
label = models.CharField(choices=LABEL_CHOICES, max_length=1)
slug = models.SlugField()
description = models.TextField()
image = models.ImageField()

def __str__(self):
return self.title

def get_absolute_url(self):
return reverse("core:product", kwargs={
'slug': self.slug
})

def get_add_to_cart_url(self):
return reverse("core:add-to-cart", kwargs={
'slug': self.slug
})

def get_remove_from_cart_url(self):
return reverse("core:remove-from-cart", kwargs={
'slug': self.slug
})


class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)

def __str__(self):
return f"{self.quantity} of {self.item.title}"

def get_total_item_price(self):
return self.quantity * self.item.price

def get_total_discount_item_price(self):
return self.quantity * self.item.discount_price

def get_amount_saved(self):
return self.get_total_item_price() - self.get_total_discount_item_price()

def get_final_price(self):
if self.item.discount_price:
return self.get_total_discount_item_price()
return self.get_total_item_price()


class Order(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ref_code = models.CharField(max_length=20)
items = models.ManyToManyField(OrderItem)
start_date = models.DateTimeField(auto_now_add=True)
ordered_date = models.DateTimeField()
ordered = models.BooleanField(default=False)
shipping_address = models.ForeignKey(
'Address', related_name='shipping_address', on_delete=models.SET_NULL, blank=True, null=True)
billing_address = models.ForeignKey(
'Address', related_name='billing_address', on_delete=models.SET_NULL, blank=True, null=True)
payment = models.ForeignKey(
'Payment', on_delete=models.SET_NULL, blank=True, null=True)
coupon = models.ForeignKey(
'Coupon', on_delete=models.SET_NULL, blank=True, null=True)
being_delivered = models.BooleanField(default=False)
received = models.BooleanField(default=False)
refund_requested = models.BooleanField(default=False)
refund_granted = models.BooleanField(default=False)

'''
1. Item added to cart
2. Adding a BillingAddress
(Failed Checkout)
3. Payment
4. Being delivered
5. Received
6. Refunds
'''

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

def get_total(self):
total = 0
for order_item in self.items.all():
total += order_item.get_final_price()
if self.coupon:
total -= self.coupon.amount
return total


class Address(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
street_address = models.CharField(max_length=100)
apartment_address = models.CharField(max_length=100)
country = CountryField(multiple=False)
zip = models.CharField(max_length=100)
address_type = models.CharField(max_length=1, choices=ADDRESS_CHOICES)
default = models.BooleanField(default=False)

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

class Meta:
verbose_name_plural = 'Address'


class Payment(models.Model):
stripe_charge_id = models.CharField(max_length=50)
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL, blank=True, null=True)
amount = models.FloatField()
timestamp = models.DateTimeField(auto_now_add=True)

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


class Coupon(models.Model):
code = models.CharField(max_length=15)
amount = models.FloatField()

def __str__(self):
return self.code


class Refund(models.Model):
order = models.ForeignKey(Order, on_delete=models.CASCADE)
reason = models.TextField()
accepted = models.BooleanField(default=False)
email = models.EmailField()

def __str__(self):
return f"{self.pk}"


设置.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
'crispy_forms',
'django_countries',
'core'
]

1 Câu trả lời

不应始终执行此操作,但您可以删除迁移文件夹中的所有迁移,但不要删除 init.py。之后,您可以再次运行迁移,它应该可以工作。

关于python - 更改 model.py 中的类名后,无需在 Django 中应用任何迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58258521/

30 4 0
Bài viết được đề xuất: python - 使用 pandas groupby 查找列最大值的日期和值
Bài viết được đề xuất: c# - 比较具有毫秒精度的日期时间
Bài viết được đề xuất: c# - 返回参数中指定类型的变量?
Bài viết được đề xuất: matlab - 获取矩阵子集的边界单元格的索引。软件
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com