Django "нет такой таблицы" при добавлении записей базы данных через терминал
Я пытаюсь создать реляционную базу данных (один ко многим) в моем файле models.py. Но при попытке добавить записи в мою базу данных я получаю ошибку, говорящую: django.db.utils.OperationalError: no such table: app1_prices. Я запустил makemigrations и migrate в терминале, так что проблема не в этом
models.py
from django.db import models
class Figure(models.Model):
id = models.CharField(max_length=12, primary_key=True)
pieces = models.IntegerField()
def __str__(self):
return self.id
class Prices(models.Model):
id = models.ForeignKey(Figure, on_delete=models.CASCADE, primary_key=True)
price_new = models.DecimalField(decimal_places=2, max_digits=8)
price_used = models.DecimalField(decimal_places=2, max_digits=8)
date = models.DateField(blank=True, null=True)
def __str__(self):
return self.id, self.date
0001_initial.py
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Figure',
fields=[
('id', models.CharField(max_length=12, primary_key=True, serialize=False)),
('pieces', models.IntegerField()),
],
),
migrations.CreateModel(
name='Prices',
fields=[
('id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='app1.figure')),
('price_new', models.DecimalField(decimal_places=2, max_digits=8)),
('price_used', models.DecimalField(decimal_places=2, max_digits=8)),
('date', models.DateField(blank=True, null=True)),
],
),
]
Код, который я пробовал в терминале:
>>> from app1.models import Figure, Prices
>>> f1 = Figure("sw0001a", 5)
>>> f1.save()
>>> p1 = Prices(f1.id, 2.00, 1.20, "2022-05-03")
>>> p1.save()
django.db.utils.OperationalError: no such table: app1_prices
Вы можете попробовать выполнить эту команду :
manage.py migrate --run-syncdb
Согласно django doc. Это позволяет создавать таблицы для приложений без миграций.