2016-05-27 15 views
1

こんにちは私は動的インラインでモデル管理を作成しています。ディスプレイにDjango管理エラーValidationError:[u'ManagementFormデータがありません、または ''で改ざんされました]

class InlineProfile(admin.TabularInline): 
    model = Profile 
#  max_num = 1 

class InlineProfileOne(admin.TabularInline): 
    model = TableOne 
#  max_num = 1 

class InlineProfileTwo(admin.TabularInline): 
    model = TableTwo 
#  max_num = 1 

class UserDisplay(admin.ModelAdmin): 
    inlines = [InlineProfile] 

    def get_inline_instances(self, request, obj=None): 
     up=UserProfile.objects.get(pk=obj.id) 
     if (up.job_type.job_type==1): 
      self.inlines.append(InlineProfileOne) 
     elif (up.job_type.job_type==2): 
      self.inlines.append(InlineProfileTwo) 
     return obj and super(UserDisplay, self).get_inline_instances(request, obj) or [] 

#  def get_formsets(self, request, obj): 
#   print obj 
#   for inline in self.get_inline_instances(request, obj): 
#    yield inline.get_formset(request, obj) 

    list_display = [f.name for f in LCUser._meta.fields] 
    field_set = list(list_display) 
    field_set.remove('id') 
    field_set.remove('api_key') 
    field_set.remove('api_secret') 

    readonly_fields=['last_login_ip','last_login_timestamp','created_at','updated_at'] 

    fieldsets = (
     (None, { 
      'fields': field_set, 

     }), 
     ('Advanced options', { 
      'classes': ('collapse',), 
      'fields': ('api_key', 'api_secret'), 
     }), 
    ) 

    search_fields=list_display 
    list_filter=['user_type','profile_complete'] 
    list_editable=list(list_display) 
    list_editable.remove('id') 
    list_editable.remove('updated_at') 
    list_editable.remove('created_at') 
    list_editable.remove('last_login_timestamp') 
    list_editable.remove('last_login_ip') 

    class Meta: 
     model = LCUser 

私はsomtimes 1つではなく、2つのインライン列を見て、私はそれを更新しようとすると、私は「ManagementFormデータが欠落しているか、改ざんされている」私が間違って何をやっていた考え出した

+1

ManagementFormをレンダリングする必要があるかもしれません。https://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform –

+0

管理フォームにインラインがある場合は、 、インラインがロードされる(接続が遅くなる)前に変更を加えると、このエラーが発生します。 – MagicLAMP

答えて

0

得ます。 inlinse変数を初期化するのを忘れたようです。だから私はオブジェクトをクリックするたびに同じインラインモデルを追加しました。そのモデルを保存しようとするとエラーが発生しました。

関連する問題