gpt4 book ai didi

python - 测试期间Django双重导入

转载 作者:行者123 更新时间:2023-12-03 09:07:06 27 4
gpt4 key购买 nike

每当我运行Django测试时,我的模型都会陷入双重导入陷阱。

每当我得到

RuntimeError: Conflicting 'userdevice' models in application 'cart': <class 'cart.models.devices.UserDevice'> and <class 'fridge.libs.cart.models.devices.UserDevice'>

最小的失败示例是 https://www.dropbox.com/sh/m802q544cet5dui/AACRGOMQXWqxUzi92WfqfvYea?dl=0

我的文件夹结构是
.
├── apps
│   ├── __init__.py
│   └── milk
│      ├── __init__.py
│      └── tests
│      ├── __init__.py
│      └── test_commands.py
├── __init__.py
├── libs
│   ├── cart
│   │   ├── __init__.py
│   │   └── models
│   │      ├── devices.py
│   │      └── __init__.py
│   └── __init__.py
├── Makefile
├── manage.py
└── settings
├── __init__.py
└── settings.py

我在 apps中有 libsINSTALLED_APPS文件夹。

我的 models/__init__.py文件包含
from .devices import *

test_commands.py我包括模型
from cart.models import UserDevice

我在SO和网络上的一些文章中阅读了多个问题。我也在调试了几个小时,所以我知道问题是我的模型被导入了两次。一次是在Django项目初始化期间将其初始化为 cart.models.devices.UserDevice,一次是将 unittest库初始化为 fridge.libs.cart.models.devices.UserDevice,但我根本不知道如何解决这种情况。

这还会在文件中引起更多问题,这些问题只能在应用程序运行期间初始化一次,但是我猜解决方案将与此相同。

我正在使用Django 1.10.8,因为这是一个旧项目,但是我在Django 2.0.7上也遇到了同样的情况。

Python版本是3.5。操作系统是Ubuntu 16.04。

感谢您的任何建议或提示。到目前为止,我发现没有任何帮助。

编辑

因此,我进行了一些实验,即使测试中没有进行任何导入,甚至根本没有测试,问题仍然存在。仅运行测试将使双重导入和 RuntimeError发生

无测试版本: https://www.dropbox.com/sh/qqzg842rihbh5im/AADzay8up3d_rFKqy2OAsx1za?dl=0

新文件夹结构
.
├── __init__.py
├── libs
│   ├── cart
│   │   ├── __init__.py
│   │   └── models
│   │      ├── devices.py
│   │      └── __init__.py
│   └── __init__.py
├── Makefile
├── manage.py
└── settings
├── __init__.py
└── settings.py

编辑:

为了将来的缘故- libs/cart/models/devices.py的内容只是简单的Django模型类
from django.db import models


class UserDevice(models.Model):

is_active = models.BooleanField(default=True)

class Meta:
app_label = 'cart'

最佳答案

我通过删除libs/__init__.py文件以某种方式“解决”了问题。我不确定为什么它首先出现在项目中。

关于python - 测试期间Django双重导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270719/

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