Таблица Django не существует
У меня есть приложение на Django под названием webshopCatalog с models.py. Все это находится на сервере разработки, и я ранее удалил базу данных mysql, а затем создал новую, поскольку я экспериментировал. Проблема в том, что когда я пытаюсь создать товар, я получаю ошибку, говорящую, что таблица не существует (см. полный журнал ошибок, когда я нажимаю на ссылку товара из админки). Я пробовал с python manage.py makemigrations и python manage.py migrate это не решает проблему.
Я также попытался закомментировать модель, сделав python manage.py makemigrations и python manage.py migrate --fake, а затем раскомментировать модель, повторив шаги без --fake, все равно это не решило проблему.
from django.db import models from django.db.models.fields.related import create_many_to_many_intermediary_model из django.urls import reverse
class Product(models.Model):
name = models.CharField(max_length = 50, unique=True)
description = models.TextField()
allergic_note = models.CharField(max_length = 255, blank = True, null=True)
quantity = models.IntegerField(null = True, blank = True) #Used for campaign products to show how many items there is left
price = models.DecimalField(max_digits=9, decimal_places=0, default=0.00)
is_active = models.BooleanField(default = True)
is_deliverable = models.BooleanField(default = True)
image_path = models.ImageField(upload_to = 'productImages')
meta_keywords = models.CharField(max_length=255, help_text="comma delimited keywords text for SEO")
meta_description = models.CharField(max_length=255, help_text="SEO description content")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
slug = models.SlugField(max_length=255, unique = True,
help_text="Unique text for url created from name")
printToKitchenName = models.CharField(max_length = 20, blank = True,
help_text= "Appears on receipt printer when printing to kitchen")
printToKitchen = models.BooleanField(default = True)
is_featured = models.BooleanField(default = False)
is_bestseller = models.BooleanField(default=False)
class Meta:
ordering = ['-created_at']
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("webshopCatalog-product", args=(self.slug,))
С помощью forms.py
from django import forms
from webshopCatalog.models import Product
class ProductAdminForm(forms.ModelForm):
class Meta:
model = Product
exclude = ['created_at', 'updated_at']
def clean_price(self):
if self.cleaned_data['price'] < 0: #We allow 0 to be included in case we want to give out free products
raise forms.ValidationError('Price cannot be negative value')
return self.cleaned_data['price']
и admin.py
from django.contrib import admin
# Register your models here.
from webshopCatalog.models import Product #Category
from webshopCatalog.forms import ProductAdminForm
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
#How the admin site will list products
list_display = ('name', 'price', 'created_at', 'updated_at',)
list_display_links = ('name',)
list_per_page = 50
ordering =['-name']
search_fields = ['name', 'description', 'meta_keywords', 'meta_description']
exclude = ('created_at', 'updated_at',)
#Sets up slug to be generated from product name
prepopulated_fields = {'slug' : ('name',)}
#Registers the product model with the admin interface
admin.site.register(Product, ProductAdmin)
Ошибка, которую я получил при нажатии на продукт из админки
Эта проблема решается
python manage.py makemigrations webshopCatalog
python manage.py migrate