def response_add(self, request, obj, post_url_continue=None):
'''
This just modifies the normal ModelAdmin process in order to
pass capacity and room options for the added Location along with
the location's name and ID.
'''
IS_POPUP_VAR = '_popup'
TO_FIELD_VAR = '_to_field'
if IS_POPUP_VAR in request.POST:
to_field = request.POST.get(TO_FIELD_VAR)
if to_field:
attr = str(to_field)
else:
attr = obj._meta.pk.attname
value = obj.serializable_value(attr)
popup_response_data = json.dumps({
'value': six.text_type(value),
'obj': six.text_type(obj),
# Add this extra data
'defaultCapacity': obj.defaultCapacity,
'roomOptions': json.dumps([{'id': x.id, 'name': x.name, 'defaultCapacity': x.defaultCapacity} for x in obj.room_set.all()]),
})
# Return a modified template
return SimpleTemplateResponse('core/admin/location_popup_response.html', {
'popup_response_data': popup_response_data,
})
# Otherwise just use the standard ModelAdmin method
return super(LocationAdmin,self).response_add(request, obj, post_url_continue)
评论列表
文章目录