感谢您访问我的帖子,
我在这里有一个错误,请帮助我查找代码中的错误。我使用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
而应用又从中导入promotions
,因此导入错误。快速的解决方案是将许多字段的模型作为字符串提供。
category_room = models.ManyToManyField(
'room.CategoryRoom', blank=True, related_name='kategory_room_voucher')
理想情况下,循环导入通常是不希望有的项目结构的征兆,其中相互关联的模块跨不同的应用程序进行分离。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句