Ismael Ezequiel
Ismael Ezequiel

Reputation: 174

Migrate django 1.11

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

Upvotes: 0

Views: 232

Answers (2)

Yusra Shahid
Yusra Shahid

Reputation: 104

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

Upvotes: 1

Ismael Ezequiel
Ismael Ezequiel

Reputation: 174

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

Upvotes: 0

Related Questions