Add ModelWithFieldAttributes *before* PolyModel, so that everything does not
become a "ModelWithFieldAttributes" in the Datastore.
The way PolyModel works, each Model class hierarchy is stored in the Datastore
as the class that directly inherited from PolyModel. So, we do not want to
insert ModelWithFieldAttributes *after* PolyModel by inheriting *from*
PolyModel, or everything would just be a ModelWithFieldAttributes in the
Datastore, instead of Person, Work, Group, etc.
from django.db.models import FieldDoesNotExist, DateTimeField
from django.http import Http404
from django.shortcuts import render_to_response
from django.contrib.databrowse.datastructures import EasyModel, EasyChoice
###########
# CHOICES #
###########
def choice_list(request, app_label, module_name, field_name, models):
m, f = lookup_field(app_label, module_name, field_name, models)
return render_to_response('databrowse/choice_list.html', {'model': m, 'field': f})
def choice_detail(request, app_label, module_name, field_name, field_val, models):
m, f = lookup_field(app_label, module_name, field_name, models)
try:
label = dict(f.field.choices)[field_val]
except KeyError:
raise Http404('Invalid choice value given')
obj_list = m.objects(**{f.field.name: field_val})
return render_to_response('databrowse/choice_detail.html', {'model': m, 'field': f, 'value': label, 'object_list': obj_list})