【问题标题】:Django - Conflicting models in application, same path but different caseDjango - 应用程序中的冲突模型,相同的路径但不同的情况
【发布时间】:2016-03-12 20:21:20
【问题描述】:

Django 1.8。 我收到此错误:

Traceback (most recent call last):
[35mrentapp    | [0m  File "/home/rentapplication/django-rentapplication/manage.py", line 10, in <module>
[35mrentapp    | [0m    execute_from_command_line(sys.argv)
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
[35mrentapp    | [0m    utility.execute()
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 312, in execute
[35mrentapp    | [0m    django.setup()
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup
[35mrentapp    | [0m    apps.populate(settings.INSTALLED_APPS)
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate
[35mrentapp    | [0m    app_config.import_models(all_models)
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/apps/config.py", line 198, in import_models
[35mrentapp    | [0m    self.models_module = import_module(models_module_name)
[35mrentapp    | [0m  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
[35mrentapp    | [0m    __import__(name)
[35mrentapp    | [0m  File "/home/rentapplication/django-rentapplication/accounts/models/__init__.py", line 3, in <module>
[35mrentapp    | [0m    from .landlord import Landlord
[35mrentapp    | [0m  File "/home/rentapplication/django-rentapplication/accounts/models/landlord.py", line 20, in <module>
[35mrentapp    | [0m    from accounting.models import Account
[35mrentapp    | [0m  File "/home/rentapplication/django-rentapplication/accounting/models/__init__.py", line 2, in <module>
[35mrentapp    | [0m    from .transaction import Transaction, RequestedWithdrawal
[35mrentapp    | [0m  File "/home/rentapplication/django-rentapplication/accounting/models/transaction.py", line 16, in <module>
[35mrentapp    | [0m    class Transaction(TimeStampedModel):
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 309, in __new__
[35mrentapp    | [0m    new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
[35mrentapp    | [0m  File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 221, in register_model
[35mrentapp    | [0m    (model_name, app_label, app_models[model_name], model))
[35mrentapp    | [0mRuntimeError: Conflicting 'transaction' models in application 'accounting': <class 'accounting.models.Transaction.Transaction'> and <class 'accounting.models.transaction.Transaction'>.

我的结构如下:

accounting
  api
  migrations
  models
    __init__.py
    account.py
    transaction.py

在 init 我有以下代码:

from .account import Account
from .transaction import Transaction, RequestedWithdrawal

我不知道 django 从哪里提出了大写事务包,我没有在我的代码中的任何地方使用它。 那么为什么会出现这个错误,以及如何解决呢?

更新。 account.py 导入

import StringIO
import csv
import logging
from decimal import Decimal

from django.conf import settings
from django.db import models
from django.db.models import Q
from django_extensions.db.models import TimeStampedModel
from notifications import notify

logger = logging.getLogger(__name__)
from accounting.tasks import notify_of_withdrawal_request_action

landlord.py 导入

import datetime
import logging
from decimal import Decimal
from collections import Counter
import random
import string
import analytics

from django.utils.timezone import utc
from django.utils.functional import cached_property
from django.utils.timezone import now
from django.db import models, transaction
from django.contrib.auth.models import User
from django_extensions.db.models import TimeStampedModel
from easy_thumbnails.fields import ThumbnailerImageField
from jsonfield import JSONField
import stripe
from rentapplication.utils import generate_random_slug
from applications.models import ApplicationTemplate
from accounting.models import Account
from reports.models import  Report, ReportSourceProfile, ReportSource
from django.core.exceptions import ValidationError
from django.contrib.auth.tokens import default_token_generator
from django.conf import settings
import base64

transaction.py 导入

import logging
from decimal import Decimal


logger = logging.getLogger(__name__)

from django.db import models
from django_fsm import FSMField, transition
from django_extensions.db.models import TimeStampedModel

from reports.models import Report

import stripe

【问题讨论】:

  • 我没有对模型使用 init 方法,我使用模型包的 init 文件将模型拆分为不同的文件,没有看到任何反对它的东西在文档中,如果你这样做 - 请提供链接。我的模型路径存在不同情况的问题,它会导致错误,而我当然只有一个路径。
  • 你能从landlord.py、account.py和transation.py添加你的导入
  • 是的,我添加了导入
  • 您能否尝试删除源代码树中的所有 *.pyc 文件,以防先前存在的 .py 文件中遗留下来的文件。

标签: python django


【解决方案1】:

我不知道为什么我会看到这个奇怪的错误消息和堆栈跟踪。但问题在于models.py和tasks.py中的循环导入。

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    相关资源
    最近更新 更多