ImportError:无法从'apps.models'(D:\ project \ django \ projects \ django \ apps \ models.py)导入名称'modelname'

空白六

感谢您访问我的帖子,

我在这里有一个错误,请帮助我查找代码中的错误。我使用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

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

hspandher

这是循环进口的经典案例。promotions应用正在导入,rooms应用又从中导入promotions,因此导入错误。快速的解决方案是将许多字段的模型作为字符串提供。

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

理想情况下,循环导入通常是不希望有的项目结构的征兆,其中相互关联的模块跨不同的应用程序进行分离。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档