2017-04-11 33 views
0

admin.py如何通过迁移django解决错误?

from django.contrib import admin 
from main.models import * 
from django.db.models import TextField 
from file_picker.wymeditor.widgets import WYMeditorWidget 

@admin.register(MainUser) 
class MainUserAdmin(admin.ModelAdmin): 
    list_display = ('username', 'first_name', 'second_name') 

class BlogAdmin(admin.ModelAdmin): 
    prepopulated_fields = {'slug':('title',)} 
    list_display = ('title', 'time') 
    formfield_overrides = {TextField: { 'widget': WYMeditorWidget({}) } } 
    class Media: 
     js = ('http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js',) 

admin.site.register(Blog, BlogAdmin) 

class PostLecture(admin.ModelAdmin): 
    list_display = ('title')  

admin.site.register(PostLecture) 

models.py

class PostLecture(models.Model): 
    title = models.CharField(max_length=200) 
    pdf = models.FileField() 
    time = models.DateTimeField(auto_now_add = True) 


    def __unicode__(self): 
     return self.title 

    def __str__(self): 
     return self.title 

    def get_absolute_url(self): 
     return reverse("posts:detail", kwargs={"id": self.id}) 

    class Meta: 
     ordering = ['-time'] 

我确实迁移与命令(makemigration和迁移)。在管理控制台中运行服务器后,我的迁移没有了。我有这样的错误:

File "./manage.py", line 22, in <module> 
    execute_from_command_line(sys.argv) 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line 
    utility.execute() 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 341, in execute 
    django.setup() 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/__init__.py", line 27, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/apps/registry.py", line 115, in populate 
    app_config.ready() 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/contrib/admin/apps.py", line 23, in ready 
    self.module.autodiscover() 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover 
    autodiscover_modules('admin', register_to=site) 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules 
    import_module('%s.%s' % (app_config.name, module_to_search)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Users/nursultan/projects/diplomproject/diplomproject/main/admin.py", line 22, in <module> 
    admin.site.register(PostLecture) 
    File "/Users/nursultan/projects/diplomproject/env/lib/python2.7/site-packages/django/contrib/admin/sites.py", line 86, in register 
    for model in model_or_iterable: 
TypeError: 'MediaDefiningClass' object is not iterable 

如何解决它?错误在哪里?

回答

1

您尚未注册PostLecture模型(与使用Blog一样)。

请更改为:

class PostLectureAdmin(admin.ModelAdmin): 
    list_display = ('title',) 

admin.site.register(PostLecture, PostLectureAdmin) 

此外,作为阿里纳斯的PostLecture模型中,删除任何一个__unicode____str__。如果您使用的是python 2,请使用__unicode__,如果您使用的是python 3,请使用__str__

+0

它会像您所写的那样更改它。然后我做了makemigration,错误:SystemCheckError:系统检查发现了一些问题: 错误: :(admin.E107)'list_display'的值必须是一个列表或元组。 –

+0

错过了'list_display'中的逗号。你看到'list_display'必须是一个元组或列表。 –

+0

它的工作原理,谢谢 –