From fdc94224090a85018dd7ec56ef222238fc5a058f Mon Sep 17 00:00:00 2001 From: Chris Church Date: Wed, 8 May 2013 17:56:40 -0400 Subject: [PATCH] Catch exception raised for the reverse access of a OneToOneField. --- lib/main/serializers.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/main/serializers.py b/lib/main/serializers.py index c204c0c07a..af5f2930b6 100644 --- a/lib/main/serializers.py +++ b/lib/main/serializers.py @@ -17,6 +17,7 @@ # Django from django.contrib.auth.models import User from django.core.urlresolvers import reverse +from django.core.exceptions import ObjectDoesNotExist # Django REST framework from rest_framework import serializers, pagination @@ -98,13 +99,17 @@ class BaseSerializer(serializers.ModelSerializer): # method for each object. summary_fields = {} for fk in SUMMARIZABLE_FKS: - fkval = getattr(obj, fk, None) - if fkval is not None: - summary_fields[fk] = {} - for field in SUMMARIZABLE_FIELDS: - fval = getattr(fkval, field, None) - if fval is not None: - summary_fields[fk][field] = fval + try: + fkval = getattr(obj, fk, None) + if fkval is not None: + summary_fields[fk] = {} + for field in SUMMARIZABLE_FIELDS: + fval = getattr(fkval, field, None) + if fval is not None: + summary_fields[fk][field] = fval + # Can be raised by the reverse accessor for a OneToOneField. + except ObjectDoesNotExist: + pass return summary_fields def get_creation_date(self, obj):