Django не обнаруживает изменений в моей модели
У меня есть модель Orders, в которой раньше не было поля slug. Поэтому я решил добавить в нее поле slug. Но когда я запускаю команду makemigrations, она говорит "Изменения не обнаружены". Я пытался вручную создать миграцию и запустить ее, но это не повлияло на мою базу данных. Да, я проверил в настройках, приложение там зарегистрировано. Модель:
class Orders(models.Model):
customer = models.ForeignKey('contractors.Customers',
models.DO_NOTHING, blank=True, null=True)
slug = models.SlugField(max_length=150, blank=True)
employee = models.ForeignKey('employees.Employees',
models.DO_NOTHING, blank=True, null=True)
order_date = models.DateField(blank=True, null=True, auto_now=True)
required_date = models.DateField(blank=True, null=True)
shipped_date = models.DateField(blank=True, null=True)
ship_via = models.ForeignKey('contractors.Shippers',
models.DO_NOTHING, db_column='ship_via',
blank=True, null=True)
freight = models.FloatField(blank=True, null=True)
ship_name = models.CharField(max_length=40, blank=True, null=True)
ship_address = models.CharField(max_length=60, blank=True, null=True)
ship_city = models.CharField(max_length=15, blank=True, null=True)
ship_region = models.CharField(max_length=15, blank=True, null=True)
ship_postal_code = models.CharField(max_length=10, blank=True, null=True)
ship_country = models.CharField(max_length=15, blank=True, null=True)
class Meta:
managed = False
db_table = 'orders'
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.customer + "-" + str(self.order_date))
super(Orders, self).save(*args, **kwargs)
def get_absolute_url(self):
return u'/orders/%d' % self.pk
def __str__(self):
return f"{self.customer} {self.order_date}"
Моя попытка вручную создать миграцию:
# Generated by Django 3.2.7 on 2021-11-10 13:47
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('orders', '0008_alter_orderdetails_options'),
]
operations = [
migrations.AddField(
model_name='orders',
name='slug',
field=models.SlugField(max_length=150, blank=True),
preserve_default=False,
),
]
Вы установили managed = False
в вашей модели Meta. Django не будет управлять моделью за вас, см. здесь. Установите значение True
, если вы хотите, чтобы Django управлял миграциями за вас.
проблема
class Meta:
managed = False
db_table = 'orders'
решение
class Meta:
db_table = 'orders'