Reputation: 174
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
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
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