0001_initial.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. # Generated by Django 5.2.6 on 2026-06-11 10:56
  2. import django.core.validators
  3. import django.db.models.deletion
  4. from django.db import migrations, models
  5. class Migration(migrations.Migration):
  6. initial = True
  7. dependencies = [
  8. ]
  9. operations = [
  10. migrations.CreateModel(
  11. name='Genre',
  12. fields=[
  13. ('genre_id', models.AutoField(primary_key=True, serialize=False)),
  14. ('genre_name', models.CharField(max_length=50, unique=True)),
  15. ],
  16. options={
  17. 'verbose_name': 'Жанр',
  18. 'verbose_name_plural': 'Жанры',
  19. 'db_table': 'genre',
  20. },
  21. ),
  22. migrations.CreateModel(
  23. name='Meloman',
  24. fields=[
  25. ('meloman_id', models.AutoField(primary_key=True, serialize=False)),
  26. ('full_name', models.CharField(max_length=150)),
  27. ('gender', models.CharField(blank=True, choices=[('M', 'Мужской'), ('F', 'Женский')], max_length=1, null=True)),
  28. ('city', models.CharField(blank=True, max_length=100, null=True)),
  29. ('birth_year', models.IntegerField(blank=True, null=True)),
  30. ],
  31. options={
  32. 'verbose_name': 'Меломан',
  33. 'verbose_name_plural': 'Меломанцы',
  34. 'db_table': 'meloman',
  35. },
  36. ),
  37. migrations.CreateModel(
  38. name='Musician',
  39. fields=[
  40. ('musician_id', models.AutoField(primary_key=True, serialize=False)),
  41. ('name', models.CharField(max_length=100, verbose_name='Имя исполнителя')),
  42. ('city', models.CharField(blank=True, max_length=100, null=True)),
  43. ('birth_year', models.IntegerField(blank=True, null=True)),
  44. ],
  45. options={
  46. 'verbose_name': 'Исполнитель',
  47. 'verbose_name_plural': 'Исполнители',
  48. 'db_table': 'musician',
  49. },
  50. ),
  51. migrations.CreateModel(
  52. name='Album',
  53. fields=[
  54. ('album_id', models.AutoField(primary_key=True, serialize=False)),
  55. ('album_name', models.CharField(max_length=150)),
  56. ('release_date', models.DateField(blank=True, null=True)),
  57. ('musician', models.ForeignKey(db_column='musician_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.musician')),
  58. ],
  59. options={
  60. 'verbose_name': 'Альбом',
  61. 'verbose_name_plural': 'Альбомы',
  62. 'db_table': 'album',
  63. },
  64. ),
  65. migrations.CreateModel(
  66. name='Preference',
  67. fields=[
  68. ('preference_id', models.AutoField(primary_key=True, serialize=False)),
  69. ('genre', models.ForeignKey(db_column='genre_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.genre')),
  70. ('meloman', models.ForeignKey(db_column='meloman_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.meloman')),
  71. ],
  72. options={
  73. 'verbose_name': 'Предпочтение',
  74. 'verbose_name_plural': 'Предпочтения',
  75. 'db_table': 'preference',
  76. },
  77. ),
  78. migrations.CreateModel(
  79. name='Song',
  80. fields=[
  81. ('song_id', models.AutoField(primary_key=True, serialize=False)),
  82. ('title', models.CharField(max_length=150)),
  83. ('duration_sec', models.IntegerField(blank=True, null=True, validators=[django.core.validators.MinValueValidator(1)])),
  84. ('album', models.ForeignKey(db_column='album_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.album')),
  85. ('genre', models.ForeignKey(db_column='genre_id', null=True, on_delete=django.db.models.deletion.SET_NULL, to='mysite.genre')),
  86. ],
  87. options={
  88. 'verbose_name': 'Песня',
  89. 'verbose_name_plural': 'Песни',
  90. 'db_table': 'song',
  91. },
  92. ),
  93. migrations.CreateModel(
  94. name='Rating',
  95. fields=[
  96. ('rating_id', models.AutoField(primary_key=True, serialize=False)),
  97. ('score', models.IntegerField(validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(10)])),
  98. ('rating_date', models.DateField(auto_now_add=True)),
  99. ('meloman', models.ForeignKey(db_column='meloman_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.meloman')),
  100. ('song', models.ForeignKey(db_column='song_id', on_delete=django.db.models.deletion.CASCADE, to='mysite.song')),
  101. ],
  102. options={
  103. 'verbose_name': 'Оценка',
  104. 'verbose_name_plural': 'Оценки',
  105. 'db_table': 'rating',
  106. },
  107. ),
  108. migrations.AddIndex(
  109. model_name='album',
  110. index=models.Index(fields=['musician'], name='idx_album_musician'),
  111. ),
  112. migrations.AlterUniqueTogether(
  113. name='preference',
  114. unique_together={('meloman', 'genre')},
  115. ),
  116. migrations.AddIndex(
  117. model_name='song',
  118. index=models.Index(fields=['album'], name='idx_song_album'),
  119. ),
  120. migrations.AddIndex(
  121. model_name='song',
  122. index=models.Index(fields=['genre'], name='idx_song_genre'),
  123. ),
  124. migrations.AlterUniqueTogether(
  125. name='rating',
  126. unique_together={('meloman', 'song')},
  127. ),
  128. ]