diff options
| author | Tom Christie | 2012-10-03 13:28:22 -0700 |
|---|---|---|
| committer | Tom Christie | 2012-10-03 13:28:22 -0700 |
| commit | 0a769f261e79272cf1be6add1bf96aaeec59fb05 (patch) | |
| tree | dd7f32d5ce01e88a2e435c406bbd120799340799 /rest_framework/renderers.py | |
| parent | 89ec0b275039868668080be740c46ebef92cff1e (diff) | |
| parent | a02707e12f750fd0d325e528f7b0fbcd7079db73 (diff) | |
| download | django-rest-framework-0a769f261e79272cf1be6add1bf96aaeec59fb05.tar.bz2 | |
Merge pull request #277 from tomchristie/related-field-fixes
Related field fixes
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 9484e29b..5bc5d5f8 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -246,7 +246,9 @@ class DocumentingHTMLRenderer(BaseRenderer): serializers.DateField: forms.DateField, serializers.EmailField: forms.EmailField, serializers.CharField: forms.CharField, - serializers.BooleanField: forms.BooleanField + serializers.BooleanField: forms.BooleanField, + serializers.PrimaryKeyRelatedField: forms.ModelChoiceField, + serializers.ManyPrimaryKeyRelatedField: forms.ModelMultipleChoiceField } # Creating an on the fly form see: http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python @@ -257,12 +259,18 @@ class DocumentingHTMLRenderer(BaseRenderer): serializer = view.get_serializer(instance=obj) for k, v in serializer.get_fields(True).items(): + print k, v if v.readonly: continue + + kwargs = {} + if getattr(v, 'queryset', None): + kwargs['queryset'] = getattr(v, 'queryset', None) + try: - fields[k] = field_mapping[v.__class__]() + fields[k] = field_mapping[v.__class__](**kwargs) except KeyError: - fields[k] = forms.CharField + fields[k] = forms.CharField() OnTheFlyForm = type("OnTheFlyForm", (forms.Form,), fields) if obj and not view.request.method == 'DELETE': # Don't fill in the form when the object is deleted |
