首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外键TestCase

外键TestCase
EN

Stack Overflow用户
提问于 2022-10-29 09:17:51
回答 1查看 33关注 0票数 1

我正试图对模型进行测试,并且遇到了一些有外键的测试。当我试着用setUp制作卡片时,我无法做到。我不明白为什么。属性category的预期值是int。无论是categorycategory.id,还是“测试类别”工作。

代码:models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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'
                                )

错误:

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-29 10:11:05

与其提供category.id,不如只提供类别对象本身。

代码语言:javascript
复制
card = Card.objects.filter(category=category,
                                question='Hello?',
                                answer='Hello!',
                                slug='slug'
                                )

我使用的是过滤器,而不是get,以防给定参数有多个对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74244118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档