Создание объектов в базе данных: FOREIGN KEY constraint failed
Когда я пытаюсь создать объект в моей базе данных, он выдает мне эту ошибку
FOREIGN KEY constraint failed
Я не понимаю, почему. У кого-нибудь есть идеи?
models.py
from django.contrib.auth.models import User
from django.db import models
class Account(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
accountid = models.CharField(max_length=100)
mt5password = models.CharField(max_length=100, default="default")
mt5server = models.CharField(max_length=100, default="default")
telegramchannel = models.CharField(max_length=100, default="default")
riskpertrade = models.FloatField(max_length=100, default="1.0")
balance = models.FloatField(default=2000)
winrate = models.CharField(max_length=100)
riskreward = models.CharField(max_length=100)
result = models.CharField(max_length=100, default="Not Passed")
def __str__(self):
return self.accountid
class AccountHistory(models.Model):
account = models.ForeignKey(Account, on_delete=models.CASCADE)
tradeid = models.CharField(max_length=100)
opendate = models.CharField(max_length=100)
type = models.CharField(max_length=100)
volume = models.CharField(max_length=100)
symbol = models.CharField(max_length=100)
openprice = models.CharField(max_length=100)
closedate = models.CharField(max_length=100)
closeprice = models.CharField(max_length=100)
profit = models.FloatField()
def __str__(self):
return self.tradeid
Вот моя функция для создания объектов базы данных views.py
def secondpage():
AccountHistory.objects.create(tradeid=30688,
account_id=98765,
opendate="8 mars",
type="buy",
volume=1.25,
symbol="EURUSD",
openprice=1.234,
closedate="9 mars",
closeprice=1.250,
profit=9349.23)
полная ошибка трассировки
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\db\utils.py", line 98, in inner
return func(*args, **kwargs)
sqlite3.IntegrityError: FOREIGN KEY constraint failed
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\test\PycharmProjects\TelegramTradeBot\mysite\main\views.py", line 79, in addaccount
secondpage()
File "C:\Users\test\PycharmProjects\TelegramTradeBot\mysite\main\views.py", line 44, in secondpage
self.connection.ops.fetch_returned_insert_columns(
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\db\backends\base\operations.py", line 212, in fetch_returned_insert_columns
return cursor.fetchone()
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\db\utils.py", line 97, in inner
with self:
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\db\utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\test\PycharmProjects\TelegramTradeBot\venv\lib\site-packages\django\db\utils.py", line 98, in inner
return func(*args, **kwargs)
django.db.utils.IntegrityError: FOREIGN KEY constraint failed
Это потому, что foreignkey не существует, как и говорит вам ошибка. И если вы называете свое поле FK account
в вашей модели AccountHistory
, почему вы пытаетесь создать его как account_id
? Есть ли у вашего AccountHistory
поле ID? А также почему вы жестко кодируете все эти значения? И почему вы используете зарезервированные ключевые слова Python в качестве имен полей для ваших моделей? Возможно, немного резковато, но, пожалуйста, не спорьте с ошибками.