Внешний ключ TestCase

Я пытаюсь выполнить тесты на моделях и испытываю трудности с теми, которые имеют внешний ключ. Когда я пытаюсь получить карточку, созданную в setUp, у меня не получается. Я не понимаю, почему. Ожидаемое значение для атрибута category - int. Ни category, ни category.id, ни 'Test Category' не работают.

Код: models.py

class Category(models.Model):
    category_name = models.CharField(max_length=32)


class Card(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    question = models.CharField(max_length=255)
    answer = models.TextField()
    slug = models.SlugField()

test_models.py

class CardTestCase(TestCase):
    def setUp(self) -> None:
        category = Category.objects.create(category_name='Test Category')
        Card.objects.create(category=category,
                            question='Hello?',
                            answer='Hello!',
                            slug='slug'
                            )

    def test_card_exists(self):
        category = Category.objects.get(category_name='Test Category')
L29        card = Card.objects.get(category=category.id,
                                question='Hello?',
                                answer='Hello!',
                                slug='slug'
                                )

Ошибка:

line 29, in test_card_exists  
    card = Card.objects.get(category=category.id,
django_cards.cards.models.Card.DoesNotExist: Card matching query does not exist.

Вместо того, чтобы предоставлять category.id просто дайте сам объект категории.

card = Card.objects.filter(category=category,
                                question='Hello?',
                                answer='Hello!',
                                slug='slug'
                                )

Я использую filter вместо get в случае, если у вас есть несколько объектов для заданных параметров.

Вернуться на верх