Python manage.py makemigrations говорит, что таблица уже существует в проекте Django

Я пытаюсь заставить своего коллегу начать работу с проектом, который я уже создал. Когда мы пытаемся запустить сервер, он говорит, что одна из таблиц уже существует. Мы погуглили, попробовали makemigrations и migrate --fake из сообщений вроде этого Django : Table doesn't exist, но все равно получаем тот же результат. Удаление таблиц в базе данных не является вариантом, потому что она подключается к некоторым производственным данным. Как я могу обойти это? Отслеживание приведено ниже.

сначала удалите все файлы миграций на ваших приложениях затем удалите базу данных и создайте ее снова

then run

python3 manage.py makemigrations

и затем:

python3 manage.py migrate

если не получилось, покажите свою модель в этом вопросе

Чтобы предотвратить подобное в будущем, стоит запомнить: Файлы миграции Django следует рассматривать как часть кодовой базы, удаляя их только при переходе из south migration в django.core.migrations . Перезагрузка южной миграции в продакшене происходит следующим образом: удалить migrations убедитесь, что модель либо удалена, либо закомментирована.

python manage.py makemigrations
python manage.py migrate --fake-initial 

также попробуйте :

python manage.py makemigrations
python manage.py migrate --fake APPNAME zero 

Но в вашем случае, приложение пытается получить доступ к базе данных при импорте, что может быть очень сложно исправить, для дальнейшей отладки этого, пожалуйста, поделитесь models.py

models.py:

from django.db import models
from django.contrib.auth.models import User, Group
from django.db.models.signals import post_save
from django.conf import settings

class Site(models.Model):
    site = models.CharField(max_length=50, unique=True)
    name = models.CharField(max_length=50)
    sic = models.CharField(max_length=10, blank=True)
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=50, null=True)
    country = models.CharField(max_length=10)
    site_type = models.CharField(max_length=30)
    region = models.CharField(max_length=4)
    gmt_offset = models.FloatField()
    system = models.CharField(max_length=10)
    timezone = models.CharField(max_length=50)
    active = models.BooleanField(default=True)

    def __str__(self):
    return(self.site)

class Site_Building(models.Model):
site = models.ForeignKey(Site, on_delete=models.CASCADE)
building_name = models.CharField(max_length=50)
address_line_1 = models.CharField(max_length=100)
address_line_2 = models.CharField(max_length=100, blank=True)
city = models.CharField(max_length=50)
state = models.CharField(max_length=50, null=True)
country = models.CharField(max_length=30)
zipcode = models.CharField(max_length=15)
office_phone = models.CharField(max_length=20, blank=True)


class Contact(models.Model):
site = models.CharField(max_length=50)
coverage = models.CharField(max_length=100)
contact_person = models.CharField(max_length=100)
function = models.CharField(max_length=50)
contact_type = models.CharField(max_length=50, default='Warehouse/DC')

class Contact_Phone_Number(models.Model):
    contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
    phone_type = models.CharField(max_length=20)
    phone_number = models.CharField(max_length=20)

class Contact_Email(models.Model):
contact = models.ForeignKey(Contact, on_delete=models.CASCADE)
email = models.CharField(max_length=100)

class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, 
unique=False)
department = models.CharField(max_length=100, default="")
default_warehouse = models.CharField(max_length=100, 
default="Warehouse")
employee_id = models.CharField(max_length=50, unique=True, blank=False)
temp_status = models.BooleanField(default=False)
datetime_offset = models.IntegerField(default=0)
regional_access = models.CharField(max_length=100, default='[]')

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

def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = 
UserProfile.objects.create(user=kwargs['instance'])
        user_profile.save()


post_save.connect(create_profile, sender=User)
Вернуться на верх