Внешний ключ 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 в случае, если у вас есть несколько объектов для заданных параметров.