2017-11-01 5 views
-5

古いDjango 1.6のadmin.pyコードをDjango 1.11に移植しようとしていますが、何らかの理由で1.11では動作しません。私はあなたに以下のコードを送っていますので、Django 1.11でおそらく動作しない古いコードの部分についていくつかの点を教えてください。どのようなヒントもありがとうございます。Django 1.6 to 1.11 Admin.py migration

---- admin.py -----

from django.contrib import admin 
from webpad.models import Layout, Element, LayoutElement, Session, Click, DataGroup, DataElement, ReportTemplate, ReportBlock, Stream, Participant, Observer, Additional 
from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 
from django import forms 

class FilteredUserAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
    obj.user = request.user 
    obj.save() 

    def queryset(self, request): 
    qs = super(FilteredUserAdmin, self).queryset(request) 
    return qs.filter(user=request.user)  

class ElementAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['name','group','connotation','color','add_to_video']}), 
    ] 

class AdditionalInline(admin.StackedInline): 
    model = Additional 
    can_delete = False 

class UserAdmin(UserAdmin): 
    inlines = (AdditionalInline,) 

class ParticipantInline(admin.TabularInline): 
    model = Participant 
    extra = 0 

class StreamAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['stream_name','active']}), 
    ] 
    inlines = [ParticipantInline] 

class LayoutElementInlineForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(LayoutElementInlineForm, self).__init__(*args, **kwargs) 
    self.fields['element'].queryset = Element.objects.filter(user=self.request.user) 

class LayoutElementInline(admin.StackedInline): 
    model = LayoutElement 
    extra = 0 
    form = LayoutElementInlineForm 
    def queryset(self, request): 
     self.form.request = request 

class LayoutAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    self.request = kwargs.pop('request', None) 
    super(LayoutAdminForm, self).__init__(*args, **kwargs) 

class LayoutAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['layout_description','columns']}), 
    ] 
    inlines = [LayoutElementInline] 
    form = LayoutAdminForm 
    def save_formset(self, request, form, formset, change): 
     instances = formset.save(commit=False) 
     for obj in formset.deleted_objects: 
     obj.delete() 
     for instance in instances: 
     instance.user = request.user 
     instance.save() 
     formset.save_m2m() 
    def get_form(self, request, obj=None, **kwargs): 
     ModelForm = super(LayoutAdmin, self).get_form(request, obj, **kwargs) 
     class ModelFormMetaClass(ModelForm): 
     def __new__(cls, *args, **kwargs): 
      kwargs['request'] = request 
      return ModelForm(*args, **kwargs) 
     return ModelFormMetaClass  

class ObserverInlineForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(ObserverInlineForm, self).__init__(*args, **kwargs) 
    self.fields['layout'].queryset = Layout.objects.filter(user=self.request.user) 
    stream_list = Stream.objects.filter(user=self.request.user, active=True) 
    self.fields['participant'].queryset = Participant.objects.filter(stream__in = stream_list) 

class ObserverInline(admin.TabularInline): 
    model = Observer 
    extra = 0 
    form = ObserverInlineForm 
    def queryset(self, request): 
     self.form.request = request 

class ClickInline(admin.TabularInline): 
    fieldsets = [ 
     (None,    {'fields': ['element','observer','timestamp']}), 
    ] 
    model = Click 
    extra = 0 

class SessionAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    self.request = kwargs.pop('request', None) 
    super(SessionAdminForm, self).__init__(*args, **kwargs) 
    stream_list = Stream.objects.filter(user=self.request.user, active=True) 
    self.fields['participant'].queryset = Participant.objects.filter(stream__in = stream_list) 

class SessionAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['participant']}), 
     ('Date information', {'fields': ['session_start','session_finish'], 'classes': ['collapse']}), 
    ] 
    form = SessionAdminForm 
    inlines = [ObserverInline, ClickInline] 
    def get_form(self, request, obj=None, **kwargs): 
    ModelForm = super(SessionAdmin, self).get_form(request, obj, **kwargs) 
    class ModelFormMetaClass(ModelForm): 
     def __new__(cls, *args, **kwargs): 
     kwargs['request'] = request 
     return ModelForm(*args, **kwargs) 
    return ModelFormMetaClass 

class DataElementInlineForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(DataElementInlineForm, self).__init__(*args, **kwargs) 
    self.fields['element'].queryset = Element.objects.filter(user=self.request.user) 

class DataElementInline(admin.StackedInline): 
    model = DataElement 
    extra = 0 
    form = DataElementInlineForm 
    def queryset(self, request): 
     self.form.request = request 

class DataGroupAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    self.request = kwargs.pop('request', None) 
    super(DataGroupAdminForm, self).__init__(*args, **kwargs) 

class DataGroupAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['visual_representation','group_description']}), 
    ] 
    inlines = [DataElementInline] 
    form = DataGroupAdminForm 
    def save_formset(self, request, form, formset, change): 
     instances = formset.save(commit=False) 
     for obj in formset.deleted_objects: 
     obj.delete() 
     for instance in instances: 
     instance.user = request.user 
     instance.save() 
     formset.save_m2m() 
    def get_form(self, request, obj=None, **kwargs): 
     ModelForm = super(DataGroupAdmin, self).get_form(request, obj, **kwargs) 
     class ModelFormMetaClass(ModelForm): 
     def __new__(cls, *args, **kwargs): 
      kwargs['request'] = request 
      return ModelForm(*args, **kwargs) 
     return ModelFormMetaClass 

class ReportBlockInlineForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(ReportBlockInlineForm, self).__init__(*args, **kwargs) 
    self.fields['data_group'].queryset = DataGroup.objects.filter(user=self.request.user) 

class ReportBlockInline(admin.TabularInline): 
    model = ReportBlock 
    extra = 0 
    form = ReportBlockInlineForm 
    def queryset(self, request): 
     self.form.request = request 

class ReportTemplateAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    self.request = kwargs.pop('request', None) 
    super(ReportTemplateAdminForm, self).__init__(*args, **kwargs) 

class ReportTemplateAdmin(FilteredUserAdmin): 
    fieldsets = [ 
     (None,    {'fields': ['report_description']}), 
    ] 
    inlines = [ReportBlockInline] 
    form = ReportTemplateAdminForm 
    def save_formset(self, request, form, formset, change): 
     instances = formset.save(commit=False) 
     for obj in formset.deleted_objects: 
     obj.delete() 
     for instance in instances: 
     instance.user = request.user 
     instance.save() 
     formset.save_m2m() 
    def get_form(self, request, obj=None, **kwargs): 
     ModelForm = super(ReportTemplateAdmin, self).get_form(request, obj, **kwargs) 
     class ModelFormMetaClass(ModelForm): 
     def __new__(cls, *args, **kwargs): 
      kwargs['request'] = request 
      return ModelForm(*args, **kwargs) 
     return ModelFormMetaClass 

admin.site.site_header = "Feedback.Studio" 
admin.site.site_title = "Feedback.Studio" 

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

admin.site.register(Element, ElementAdmin) 
admin.site.register(Session, SessionAdmin) 
admin.site.register(Stream, StreamAdmin) 
admin.site.register(Layout, LayoutAdmin) 

admin.site.register(DataGroup, DataGroupAdmin) 
admin.site.register(ReportTemplate, ReportTemplateAdmin) 
+1

ちょうど私達にチェックするためのコードをスローしないでください。複数の問題がある場合は、コードを複数の質問に分割し、試したこと、正確なエラーメッセージ、行の内容などを教えてください。 – Adelin

+1

5つのメジャーバージョンを直ちにアップグレードすることは決してできません。それだけ段階的に。 – Sayse

+0

いずれにしても、あなたが実際に抱えている問題と何が得られるのかを教えてください。 –

答えて

0

それは単純なものであることが判明。ジャンゴ1.6で結構です

...:上記の私のコードでは、のようないくつかの方法...

デフクエリセット(自己、リクエスト)があります。しかし、Djangoの1.11のための正しいオーバーライドする必要があります...

デフget_queryset(自己、リクエスト):

関連する問題