使用Django Admin

时间:2015-08-04 05:08:06

标签: django django-models django-forms django-admin django-views

我是Django的初学者。我想从Django Admin创建一些ERP。

我的问题是我有一些功能需要从另一个模型A 中选择对象,然后使用模型A中的选定对象创建一个新的模型B (关系是多对一的)

示例
我有模型A 模型B 。 让我们说我想创建模型B 。我必须转到模型A 的列表来选择对象(选中或选中),然后我提交列表以创建模型B 。之后,重定向(或使用其他方式)到用于创建模型B 的页面,其中包含我从模型A 中选择的所有对象。提交时,它将保存并创建模型B 的对象,该对象具有许多模型A 的对象。

我必须从列表中选择模型A 的对象,而不是从内联表单中搜索。

我尝试了几种方法,但没有成功。

这是我的代码(我从Django文档获得的一些代码和django/contrib/admin/options.py方法中的changform_views

当我选择模型A 的对象并选择操作pass_cheque时,它会重定向到用于创建模型B的视图(问题是我无法从ModelAdmin获取views (B)来创建管理表单。

admin.py

def pass_receive_cheque(modeladmin, request, queryset):
   selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME)
   ct = ContentType.objects.get_for_model(queryset.model)
   return HttpResponseRedirect("/passcheque/receive/?ct=%s&ids=%s" % (ct.pk,",".join(selected)))

views.py

def pass_receive_cheque(request):
   modeladmin = ??? #I don't know what i should do
   opts = modeladmin.model._meta
   app_label = opts.app_label
   obj = None
   add = True
   ModelForm = modeladmin.get_form(request, obj)
   initial = modeladmin.get_changeform_initial_data(request)
   form = ModelForm(initial=initial)
   formsets, inline_instances = modeladmin._create_formsets(request, modeladmin.model(), change=False)
   adminForm = helpers.AdminForm(
      form,
      list(modeladmin.get_fieldsets(request, obj)),
      modeladmin.get_prepopulated_fields(request, obj),
      modeladmin.get_readonly_fields(request, obj),
      model_admin=modeladmin)
   media = modeladmin.media + adminForm.media
   inline_formsets = modeladmin.get_inline_formsets(request, formsets, inline_instances, obj)
   for inline_formset in inline_formsets:
       media = media + inline_formset.media
   return render(request, 'account_statement/passcheque.html', {
       'title': 'PASS CHEQUE',
       'site_header': 'HSL FINANCE',
       'opts': opts,
       'change': False,
       'is_popup': False,
       'save_as': True,
       'has_delete_permission': False,
       'has_add_permission': True,
       'has_change_permission': True,
       'add': add,
       'adminform': adminForm,
       'media': media,
       'inline_admin_formsets': inline_formsets,
       'errors': helpers.AdminErrorList(form, formsets),
   })

感谢您的每一个答案和建议。

0 个答案:

没有答案