DoesNotExist: соответствующий запрос не существует
Я пишу тесты моделей в django и вот мой тест:
class StockTest(TransactionTestCase):
def setUp(self):
Stock.objects.create(
product_id=Products.objects.get(product_id=1),
date='2021-10-10', count=1)
def test_stocks(self):
stocks_milk = Stock.objects.get(count=1)
stocks_cookies = Stock.objects.get(count=2)
self.assertEqual(
stocks_milk.__str__(), 1)
self.assertEqual(
stocks_cookies.__str__(), 2)
и моя модель, где product_id является внешним ключом к Products:
class Stock(models.Model):
stock_id = models.AutoField(primary_key=True)
date = models.DateField()
count = models.IntegerField()
product_id = models.ForeignKey(Products, models.DO_NOTHING, db_column='product_id')
user = models.CharField(max_length=255)
def __str__(self):
return str(self.count)
Когда я запускаю тест, я получаю ошибку: grocery_check.models.Products.DoesNotExist: Products matching query does not exist.
Как правильно получить id из таблицы Products?
def setUp(self):
Stock.objects.create(
product_id=Products.objects.get(product_id=1),
date='2021-10-10', count=1)
В этой части вашего кода вы пытаетесь получить продукты с id=1, но такого продукта с id=1 не существует.
Если вы хотите использовать этот код только для тестирования, вы можете использовать метод first()
Stock.objects.create(
product_id=Products.objects.first().id,
date='2021-10-10', count=1)
Функция first() возвращает первый объект, соответствующий набору запросов.
Помните также, что нужно поставить .id, поскольку вы запрашиваете id в product_id
Products.objects.first().id