【发布时间】:2021-05-26 08:21:08
【问题描述】:
我在 Django 中构建这个应用程序,如果我添加或删除了一个新字段,我在更改模型时遇到了问题。我保存,然后进行迁移和迁移。但是,更改不会反映在 MySql 或数据库表中。如果我删除数据库并从头开始做所有事情,那么我会看到更改。我做错了什么?我不相信每次更改或在 models.py 中添加内容时都必须删除整个数据库
我使用 XAMPP 7.3.27 将 Django 连接到 MySql,所有 CRUD 工作正常。每当我更改 models.py 中的结构时,就会出现此问题。
这就是我在 models.py 中的内容
from django.db import models
from django.utils import timezone
from django.urls import reverse
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=200,db_index=True)
slug = models.SlugField(max_length=200,unique=True)
class Meta:
ordering = ('name',)
verbose_name = 'category'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category_detail',args=[self.slug])
class Product(models.Model):
category = models.ForeignKey(Category,related_name='products',on_delete=models.CASCADE)
author = models.ForeignKey('Author',related_name='authors',on_delete=models.CASCADE)
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200, db_index=True)
image = models.ImageField(upload_to='products/%Y/%m/%d',blank=True)
image2 = models.ImageField(upload_to='products/%Y/%m/%d',blank=True)
image3 = models.ImageField(upload_to='products/%Y/%m/%d',blank=True)
publisher = models.CharField(max_length=100, db_index=True)
release_date = models.DateTimeField(null=True)
description = models.TextField(blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
created = models.DateTimeField(default=timezone.now)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-created',)
index_together = (('id', 'slug'),)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('product_detail',args=[str(self.slug)])
class Author(models.Model):
first_name = models.CharField(max_length=200, db_index=True)
last_name = models.CharField(max_length=200, db_index=True)
created = models.DateTimeField(default=timezone.now)
class Meta:
ordering = ('-first_name',)
index_together = (('id'),)
def __str__(self):
return self.first_name + " " + self.last_name
【问题讨论】:
-
这与您的迁移文件有关。运行
makemigrations命令后,您可以分享您的迁移文件夹详细信息吗?
标签: django