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
Вернуться на верх