No migrations to apply in Django after changing class name in


Zin Myo Swe

after i changed name of class BillingAddress To class Address. and tried these stages

  1. Deleted all the migration records from your app's migration directory.

  2. Also Deleted the db.sqlite3 file.

And Then, I did following commands

python makemigrations core
python migrate

After migrated, Instead of showing data inserted ,it is shown No migrations to apply. in Terminal

PS C:\Users\Dell\project5> python makemigrations core
Migrations for 'core':
- 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 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>

when i click add to cart button, it shown error as

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

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.
('SB', 'Shirts And Blouses'),
('TS', 'T-Shirts'),
('SK', 'Skirts'),
('HS', 'Hoodies&Sweatshirts')

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

('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,
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,
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()
total -=
return total

class Address(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
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"{}"


Continue reading...