属性错误:'module'对象没有属性'commit_on_success'。

3
我可以帮你进行翻译。下面是翻译的结果:

我正在尝试使用Django-nested-inlines应用程序,但出现错误。这里是一个简单的代码:

MODELS.PY

class Language_Quiz(models.Model):
    name = models.CharField(max_length=40)
    language = models.OneToOneField(sfl_models.Language)


class Question(models.Model):
    language_quiz = models.ForeignKey(Language_Quiz)
    text = models.TextField()

class Answer(models.Model):
    question = models.ForeignKey(Question,related_name='answers')
    text = models.TextField()
    correct = models.BooleanField()

ADMIN.PY

from django.contrib import admin
import models
from nested_inlines.admin import NestedModelAdmin, NestedTabularInline

class AnswerInline(NestedTabularInline):
    model = models.Answer

class QuestionInline(NestedTabularInline):
    model = models.Question

class LanguageQuizAdmin(NestedModelAdmin):
    inlines = [QuestionInline]



admin.site.register(models.Language_Quiz,LanguageQuizAdmin)
admin.site.register(models.Answer)
admin.site.register(models.Question)

但是当我运行服务器或尝试进行迁移时,就会出现错误。我不知道问题出在哪里。问题出在哪里?

TRACEBACK

(venv) C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2>python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\core\management\__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\core\management\__init__.py", line 328, in execute
    django.setup()
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\apps\registry.py", line 115, in populate
    app_config.ready()
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\contrib\admin\apps.py", line 22, in ready
    self.module.autodiscover()
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\contrib\admin\__init__.py", line 24, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\django\utils\module_loading.py", line 74, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\language_tests\admin.py", line 3, in <module>
    from nested_inlines.admin import NestedModelAdmin, NestedTabularInline
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\nested_inlines\admin.py", line 16, in <module>
    class NestedModelAdmin(ModelAdmin):
  File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages_2\venv\lib\site-packages\nested_inlines\admin.py", line 131, in NestedModelAdmin
    @transaction.commit_on_success
AttributeError: 'module' object has no attribute 'commit_on_success'

我认为这是版本兼容性问题。你正在使用哪个Django版本?"Django-nested-inlines"是否支持它?因为现在使用的是@transaction.atomic而不是@transaction.commit_on_success。如果这个链接可以帮助到你(https://github.com/theatlantic/django-nested-admin/issues/7) - kapilsdv
2
不要使用这个库。它最后一次修改是在2013年,看起来已经不再维护了。 - karthikr
1个回答

0

正如Kapil Sachdev和karthikr所评论的那样,问题出在兼容性上。Django-nested-inlines可能在与Django 1.8+一起使用时存在一些问题。

在我的情况下,解决方案非常简单。使用pip下载Django-nested-inline(inline末尾不要加's'),然后只需更改导入即可。我甚至不需要更改代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接