gpt4 book ai didi

Django - setUpTestData 和多对多关系

转载 作者:行者123 更新时间:2023-11-28 20:53:49 26 4
gpt4 key购买 nike

我需要在我的 setUpTestData 序列中添加多对多关系,这样我的测试才能正确运行。

根据 the docs ,在保存对象之前无法创建多对多关系,因为主键必须首先存在。这意味着我不能像处理其他变量那样在 setUpTestData 中设置与 Model.objects.create() 的关系。

有没有办法在 setUpTestData 中包含多对多关系? ?

最佳答案

作为部分答案,我发现 in the docs 的解决方案似乎只奏效了一半。这是我的代码:

(我正在将社交应用程序链接到 Django 的站点框架,以便我的测试能够运行)。

SetupTestData.py

from django.test import TestCase
from django.contrib.sites.models import Site
from allauth.socialaccount.models import SocialApp

class TestData(TestCase):

@classmethod
def setUpTestData(cls):

cls.current_site = Site.objects.get_current()

cls.SocialApp1 = cls.current_site.socialapp_set.create(
provider="facebook",
name="facebook",
client_id="123456789",
secret="0987654321",
)

test_sandbox.py

from MyApp.tests.SetupTestData import TestData
from django.contrib.sites.models import Site
from allauth.socialaccount.models import SocialApp

class TestHomePage(TestData):

def test_sandbox(self):
print(Site.objects.all())
print(Site.objects.get_current())
print(Site.objects.get_current().socialapp_set.all())
print(self.SocialApp1)
print(self.SocialApp1.sites)
print(SocialApp.objects.get(provider='facebook').sites)

测试输出

Creating test database for alias 'default'...
[<Site: example.com>]
example.com
[<SocialApp: facebook>]
facebook
sites.Site.None
sites.Site.None
Destroying test database for alias 'default'...

从结果中可以看出,我可以通过站点找到该应用程序,但它似乎无法向后工作。我想如果我以某种方式反转 setUpTestData 中的关系,我可以让它以相反的方式工作。我会留下这个问题以获得更好的解决方案。

关于Django - setUpTestData 和多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34446775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com