Я начинающий Django и знакомлюсь с его использованием, и я также очень верю в модульное тестирование.Django Unit testing, неизвестная ошибка столбца
Учитывая таблицу contracts
Пример базы данных с полями
parent_id int
contract_num varchar
start_date date
end_date date
org_name varchar
я определил класс модели с помощью django_admin.py inspectdb > models.py
class Contracts(models.Model):
parent_id = models.IntegerField()
contract_num = models.CharField(max_length=10L, db_column='contract_num')
start_date = models.DateField()
end_date = models.DateField(null=True, blank=True)
org_name = models.CharField(max_length=100L, db_column='org_name')
class Meta:
db_table = 'contracts'
В тестовом классе, я определил
def setUp(self):
self.contracts = Contracts(parent_id = 300, contract_num = "1234", start_date = timezone.now(), end_date = None, org_name = "TestContractName")
def test_contracts_access(self):
self.contracts.save()
getContracts = Contracts.objects.get(parent_id = 300)
self.assertEqual(getContracts.org_name, "TestContractName")
self.assertEqual(getContracts.contract_num, "1234")
self.assertEquals(getContracts.contract_num, "12")
getContracts.org_name = "TestContractNameUpdate"
getContracts.save()
updateContract = Contracts.objects.get(contract_num = "1234")
self.assertEqual(updateContract.org_name, "TestContractNameUpdate")
Когда Я запускаю этот тест, я получаю ошибку базы данных 1054: «Неизвестный co lumn contracts.id в списке полей ". Что именно это значит? Первая ошибка в трассировке стека - это вызов get сразу после первого сохранения.
Вещь, у меня есть тот же самый тест, установленный для другого объекта модели, и тот проходит.
У вас есть первичный ключ в базе данных? Возможно, вам нужно указать, какой из них находится в вашей модели, если это настраиваемое поле, иначе django будет искать поле «id». Как выглядит ваша другая рабочая модель? https://docs.djangoproject.com/ru/dev/topics/db/models/#automatic-primary-key-fields –
согласен с @mshell_lauren. По умолчанию Django всегда будет иметь первичный ключ как «id», вы можете переопределить основное поле в определении поля 'primary_key = True' –
@mshell_lauren, если вы сделаете свой комментарий в качестве ответа, я его приму. Благодарю. – Jason