0

Why when I try to migrate my model for every some Model that I add, though some error, like:

I don't wanna delete and create another database. I just wanna change the existing database and If I have some data in my data base?

(1060, "Duplicate column name ...)
(1054, "Unknown column 'vacina_agentmodel.phone' in 'field list'")
(1054, "Unknown column 'created' in 'vacina_vaccinemodel'")

Initial Migrate

dependencies = [
    ('vacina', '0001_initial'),
]

operations = [
    migrations.CreateModel(
        name='PatientModel',
        fields=[
            ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
            ('complete_name', models.CharField(max_length=100, verbose_name='Nome completo')),
            ('birthday', models.DateField(verbose_name='Data de nascimento')),
            ('email', models.EmailField(default='', max_length=200, verbose_name='Email')),
            ('phone', models.IntegerField(blank=True, verbose_name='Número de telefone')),
            ('address', models.CharField(default='', max_length=200, verbose_name='Endereço')),
            ('house_number', models.CharField(blank=True, max_length=10, verbose_name='Número da casa/apartamento')),
            ('country', models.CharField(default='', max_length=100, verbose_name='Pais')),
            ('province', models.CharField(default='', max_length=100, verbose_name='Estado')),
            ('zip_code', models.IntegerField(verbose_name='CEP')),
            ('created_at', models.DateTimeField(auto_now_add=True)),
            ('last_modification', models.DateTimeField(auto_now=True)),
        ],
        options={
            'ordering': ('created_at',),
        },
    ),
]

///////////////////////

dependencies = [
    ('vacina', '0008_auto_20170802_0507'),
]

operations = [
    migrations.AlterModelOptions(
        name='agentmodel',
        options={'ordering': ('created_at',)},
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='country',
        field=models.CharField(default='', max_length=100, verbose_name='Pais'),
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='created_at',
        field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
        preserve_default=False,
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='house_number',
        field=models.CharField(blank=True, max_length=10, verbose_name='Número da casa/apartamento'),
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='last_modification',
        field=models.DateTimeField(auto_now=True),
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='phone',
        field=models.IntegerField(blank=True, default=django.utils.timezone.now, verbose_name='Número de telefone'),
        preserve_default=False,
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='province',
        field=models.CharField(default='', max_length=100, verbose_name='Estado'),
    ),
    migrations.AddField(
        model_name='agentmodel',
        name='zip_code',
        field=models.IntegerField(default=django.utils.timezone.now, verbose_name='CEP'),
        preserve_default=False,
    ),
    migrations.AlterField(
        model_name='agentmodel',
        name='email',
        field=models.EmailField(default='', max_length=200, verbose_name='Email'),
    ),
]

And my models.py file content :

class PatientModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    complete_name = models.CharField(_('Nome completo'), max_length=100, blank=False)
    birthday = models.DateField(_('Data de nascimento'), blank=False, null=False)
    email = models.EmailField(_('Email'), max_length=200, blank=False, default='')
    phone = models.IntegerField(_('Número de telefone'), blank=True)
    address = models.CharField(_('Endereço'), max_length=200, blank=False, default='')
    house_number = models.CharField(_('Número da casa/apartamento'), max_length=10, blank=True)
    country = models.CharField(_('Pais'), max_length=100, blank=False, default='')
    province = models.CharField(_('Estado'), max_length=100, blank=False, default='')
    zip_code = models.IntegerField(_('CEP'), blank=False)
    created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
    last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta: 
    ordering = ('created_at',)

def __meta__(self):
    return self.complete_name


class AgentModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    complete_name = models.CharField(_('Nome completo'), max_length=100, blank=False)
    birthday = models.DateField(_('Data de nascimento'), blank=False, null=False)
    email = models.EmailField(_('Email'), max_length=200, blank=False, default='')
    phone = models.IntegerField(_('Número de telefone'), blank=True)
    address = models.CharField(_('Endereço'), max_length=200, blank=False, default='')
    house_number = models.CharField(_('Número da casa/apartamento'), max_length=10, blank=True)
    country = models.CharField(_('Pais'), max_length=100, blank=False, default='')
    province = models.CharField(_('Estado'), max_length=100, blank=False, default='')
    zip_code = models.IntegerField(_('CEP'), blank=False)
    created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
    last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta: 
    ordering = ('created_at',)

def __meta__(self):
    return self.complete_name


class VaccineModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    vaccine_name = models.CharField(_('Nome da vacina'), max_length=255, blank=False)
    against_indicative = models.TextField(_('Contra indicativo'), max_length=500, blank=True)
    avoided_diseases = models.TextField(_('Doenças evitadas'), max_length=200, blank=False)
    age = models.CharField(_('Idade'), max_length=255, blank=False)
    comments = models.TextField(_('Comentário adicional'), max_length=200, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
    last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta:
    ordering = ('vaccine_name',)

def __str__(self):
    return self.vaccine_name

Joël
  • 2,723
  • 18
  • 36
Ismael Ezequiel
  • 174
  • 1
  • 1
  • 12

2 Answers2

1

Hey in your app folder there would be a folder named migrations try deleting all the files in format 001_initial.py and then run makemigrations command from command prompt, that allows you to edit models without deleting the whole database.

Edit: Hey follow this link: Currently using Django "Evolution", is "South" better and worth switching? try using south maybe this is the answer to your problem for handling changes once the database has been set

Yusra Shahid
  • 104
  • 9
  • but that's temporary solution if models will be modified again it will again generate same error – Gahan Aug 02 '17 at 05:57
  • yes, and the documentation say that's not a good practice, 'cause we need these migrations to do some rollback or something like that... – Ismael Ezequiel Aug 02 '17 at 14:59
0

My models.py

class PatientModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
complete_name = models.CharField(_('Nome completo'), max_length=100, blank=False)
birthday = models.DateField(_('Data de nascimento'), blank=False, null=False)
email = models.EmailField(_('Email'), max_length=200, blank=False, default='')
phone = models.IntegerField(_('Número de telefone'), blank=True)
address = models.CharField(_('Endereço'), max_length=200, blank=False, default='')
house_number = models.CharField(_('Número da casa/apartamento'), max_length=10, blank=True)
country = models.CharField(_('Pais'), max_length=100, blank=False, default='')
province = models.CharField(_('Estado'), max_length=100, blank=False, default='')
zip_code = models.IntegerField(_('CEP'), blank=False)
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta: 
    ordering = ('created_at',)

def __meta__(self):
    return self.complete_name


class AgentModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
complete_name = models.CharField(_('Nome completo'), max_length=100, blank=False)
birthday = models.DateField(_('Data de nascimento'), blank=False, null=False)
email = models.EmailField(_('Email'), max_length=200, blank=False, default='')
phone = models.IntegerField(_('Número de telefone'), blank=True)
address = models.CharField(_('Endereço'), max_length=200, blank=False, default='')
house_number = models.CharField(_('Número da casa/apartamento'), max_length=10, blank=True)
country = models.CharField(_('Pais'), max_length=100, blank=False, default='')
province = models.CharField(_('Estado'), max_length=100, blank=False, default='')
zip_code = models.IntegerField(_('CEP'), blank=False)
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta: 
    ordering = ('created_at',)

def __meta__(self):
    return self.complete_name


class VaccineModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
vaccine_name = models.CharField(_('Nome da vacina'), max_length=255, blank=False)
against_indicative = models.TextField(_('Contra indicativo'), max_length=500, blank=True)
avoided_diseases = models.TextField(_('Doenças evitadas'), max_length=200, blank=False)
age = models.CharField(_('Idade'), max_length=255, blank=False)
comments = models.TextField(_('Comentário adicional'), max_length=200, blank=True)
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
last_modification = models.DateTimeField(auto_now_add=False, auto_now=True)

class Meta:
    ordering = ('vaccine_name',)

def __str__(self):
    return self.vaccine_name
Ismael Ezequiel
  • 174
  • 1
  • 1
  • 12