gpt4 book ai didi

python - 导入错误 : cannot import name 'modelname' from 'apps.models' (D:\project\django\projects\django\apps\models. py)

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:39 36 4
gpt4 key购买 nike

感谢您访问我的帖子,

我这里有一个错误,请帮我找出代码中的错误。我使用 Django 2.2。我错了:

ImportError: cannot import name 'CategoryRoom' from 'rooms.models' (D:\project\django\voice web app\django\rooms\models.py)

我的完整命令行是这样的:

(env) D:\project\django\voice web app\django>python manage.py makemigrations
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "D:\project\django\voice web app\env\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "D:\project\django\voice web app\env\lib\site-packages\django\core\management\__init__.py", line 357, in execute
django.setup()
File "D:\project\django\voice web app\env\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "D:\project\django\voice web app\env\lib\site-packages\django\apps\registry.py", line 114, in populate
app_config.import_models()
File "D:\project\django\voice web app\env\lib\site-packages\django\apps\config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "C:\Program Files\Python 3.7.5\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "D:\project\django\voice web app\django\rooms\models.py", line 4, in <module>
from promotions.models import Bundle
File "D:\project\django\voice web app\django\promotions\models.py", line 3, in <module>
from rooms.models import CategoryRoom
ImportError: cannot import name 'CategoryRoom' from 'rooms.models' (D:\project\django\voice web app\django\rooms\models.py)

我试图找出错误,但无法在我的代码中查看我的错误,我的代码是这样的:

from django.db import models
from django.conf import settings
from rooms.models import CategoryRoom
from accounts.models import Member, Guest
from restaurants.models import CategoryMenu, Menu
# Create your models here.

# voucher register


class Voucher(models.Model):
status_choice = [
('0', 'deleted'),
('1', 'active'),
]
# tipe voucher
type_choices = [
('r', 'room'),
('n', 'nominal'),
]
name = models.CharField(max_length=30) # nama voucher
description = models.CharField(max_length=50) # deskripsi voucher
type = models.CharField(
max_length=1, choices=type_choices, default='r') # tipe voucher
category_room = models.ManyToManyField(
CategoryRoom, blank=True, related_name='kategory_room_voucher') # kategory room yang divoucherkan
# kategory nilai jam atau nominal, tergantung tipe yang dipilih
value = models.IntegerField()
minimal_transaction = models.IntegerField(
null=True) # minimal transaki validasi
# waktu jam voucher berlaku setiap harinya
timestart = models.TimeField(default=0)
# waktu jam berakhir setiap harinya
timestop = models.TimeField(default=0)
# hari voucher bisa digunakan
allowed_days = models.CharField(max_length=255, default='all')
# masa berlaku untuk setiap voucher yang di generate dalam satuan hari
period = models.IntegerField()
expired = models.DateTimeField(null=True) # masa kadaluarsa voucher
status = models.BooleanField(
choices=status_choice, default=1) # status voucher nya
create_by = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='voucher_promotions_creator') # creator
create_at = models.DateTimeField(
auto_now=True, auto_now_add=False) # waktu dibuat

我的 rooms.models.py 代码模型是这样的:

from django.db import models
from django.conf import settings
from accounts.models import Member, Guest
from promotions.models import Bundle
# Create your models here.

# kategory room


class CategoryRoom(models.Model):
name = models.CharField(max_length=20, unique=True) # nama kategory
master_price = models.IntegerField() # harga normal
hh_change = models.IntegerField() # selisih harga saat happyhour
wd_change = models.IntegerField() # harga saat weekend/holiday
wd_hh_change = models.IntegerField() # harga saat weekend/holiday
max_guest = models.IntegerField() # maksimal tamu
create_by = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='category_creator') # creator
create_at = models.DateTimeField(
auto_now=True, auto_now_add=False) # waktu dibuat

请帮我看看我的代码有什么问题,先谢谢

最佳答案

这是循环导入的经典案例。 promotions 应用程序从 rooms 导入,而 rooms 又从 promotions 导入,因此出现导入错误。快速解决方案是为多对多字段提供模型作为字符串。

category_room = models.ManyToManyField(
'room.CategoryRoom', blank=True, related_name='kategory_room_voucher')

理想情况下,循环导入通常是项目结构不良的症状,其中相互链接的模块在不同的应用程序中分离。

关于python - 导入错误 : cannot import name 'modelname' from 'apps.models' (D:\project\django\projects\django\apps\models. py),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59342889/

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