import uuid
from django.db import models
from django.core import validators
class Author(models.Model):
class Meta:
verbose_name = 'Автор'
verbose_name_plural = 'Авторы'
ordering = ['id']
unique_together = ('name', 'age')
TYPES = (
('a', 'forein'),
('b', 'domestic'),
('c', 'other')
)
id = models.UUIDField(primary_key=True, db_index=True, default=uuid.uuid4)
name = models.CharField(verbose_name='Имя автора',
max_length=200,
validators=[validators.RegexValidator(regex='^.*em$', message='Wrong')])
age = models.PositiveIntegerField(verbose_name='Возраст автора')
email = models.EmailField(verbose_name='Почта автора')
lit_type = models.CharField(max_length=1, verbose_name='Тип литиратуры', choices=TYPES, default='a')
def __str__(self):
return self.name
class Book(models.Model):
class Meta:
verbose_name = 'Книга'
verbose_name_plural = 'Книги'
get_latest_by = 'published'
title = models.CharField(max_length=200)
description = models.TextField()
page_num = models.PositiveIntegerField()
published = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
def __str__(self):
return self.title
<pre>(venv) PS C:\Users\user\Desktop\dz\new_pr> python manage.py makemigrations
It is impossible to add a non-nullable field 'author' to book without specifying a default. This is because the database needs something to populate existing rows.
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit and manually define a default value in models.py.
Select an option: 1
Please enter the default value as valid Python.
The datetime and django.utils.timezone modules are available, so it is possible to provide e.g. timezone.now as a value.
Type 'exit' to exit this prompt
>>> Traceback (most recent call last):
File "C:\Users\user\Desktop\dz\new_pr\manage.py", line 22, in <module>
main()
File "C:\Users\user\Desktop\dz\new_pr\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\base.py", line 448, in execute
output = self.handle(*args, **options)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\core\management\commands\makemigrations.py", line 218, in handle
changes = autodetector.changes(
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\autodetector.py", line 46, in changes
changes = self._detect_changes(convert_apps, graph)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\autodetector.py", line 195, in _detect_changes
self.generate_added_fields()
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\autodetector.py", line 1021, in generate_added_fields
self._generate_added_field(app_label, model_name, field_name)
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\autodetector.py", line 1054, in _generate_added_field
field.default = self.questioner.ask_not_null_addition(
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\questioner.py", line 186, in ask_not_null_addition
return self._ask_default()
File "C:\Users\user\Desktop\dz\new_pr\venv\lib\site-packages\django\db\migrations\questioner.py", line 151, in _ask_default
KeyboardInterrupt
What I have tried:
It doesn’t migrate for me, after I drive 1, it asks for an exit, I press o CTRL + C and that’s it, there is no migration,