Объекты модели не имеют первичного ключа
К сожалению, я не могу избавиться от проблемы, обнаруженной в коде: Я создал новую модель, чтобы различать заказы на продажу и заказы на покупку. Проблема в том, что при создании объекта никак не распознается первичный ключ. Через раздел администратора я создаю объект, но если я пытаюсь нажать на него, он не распознается, и я не могу его удалить. Через Robo 3T я заметил, что по сравнению с заказами первой модели, вторая модель имеет на одно поле меньше, то, которое связано с id. Модели, о которых идет речь, практически идентичны, но одна работает, другая нет.
models.py
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
from django.utils import timezone
class Profile(models.Model):
user_profile=models.ForeignKey(User,on_delete=models.CASCADE)
btc=models.IntegerField(default=5)
usd=models.IntegerField(default=100000)
initial_balance=models.IntegerField()
class Order(models.Model):
profile=models.ForeignKey(User,on_delete=models.CASCADE)
datetime=models.DateTimeField(default=timezone.now())
price=models.FloatField()
quantity=models.FloatField()
class SellOrder(models.Model):
buyer_profile=models.ForeignKey(User,on_delete=models.CASCADE)
buyer_datetime=models.DateTimeField(default=timezone.now())
buyer_price=models.FloatField()
buyer_quantity=models.FloatField()
views.py
Возможно, я ошибаюсь, но. В начале создания моделей моего Django проекта я очень часто сталкиваюсь с миграциями... Поскольку первичные ключи должны создаваться Django автоматически, я предлагаю вам сначала проверить в ваших миграциях, созданы ли поля['id']. Вот пример того, как это должно выглядеть
migrations.CreateModel(
name='Post',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200, unique=True)),
('content', models.TextField()),
],
),
Если поле отсутствует, вы можете повторно запустить миграции и надеяться, что оно будет добавлено, или просто написать недостающую строку самостоятельно