Skip to content

Commit

Permalink
handle reverse foreign key serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
fredkingham committed May 30, 2019
1 parent 27e26f9 commit a59a303
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
6 changes: 5 additions & 1 deletion opal/models.py
Expand Up @@ -174,7 +174,11 @@ def _get_field_title(cls, name):
@classmethod
def _get_field_default(cls, name):
field = cls._get_field(name)
default = field.get_default()

if isinstance(field, models.ManyToOneRel):
default = []
else:
default = field.get_default()

# for blank fields the result is a blank string, lets just remove that
if default == '':
Expand Down
4 changes: 3 additions & 1 deletion opal/tests/models.py
Expand Up @@ -73,7 +73,9 @@ class HouseOwner(models.PatientSubrecord):

class House(dmodels.Model):
address = dmodels.CharField(max_length=200)
house_owner = dmodels.ForeignKey(HouseOwner, null=True, blank=True, on_delete=dmodels.CASCADE)
house_owner = dmodels.ForeignKey(
HouseOwner, null=True, blank=True, on_delete=dmodels.CASCADE
)


class Dog(lookuplists.LookupList):
Expand Down
12 changes: 8 additions & 4 deletions opal/tests/test_models.py
Expand Up @@ -3,7 +3,7 @@
"""
import os
import datetime
from mock import patch, MagicMock
from mock import patch

from django.conf import settings
from django.utils import timezone
Expand Down Expand Up @@ -428,8 +428,8 @@ def test_get_title_over_many_to_many(self):
self.assertEqual(hats, "Hats")

def test_get_title_over_reverse_foreign_key(self):
hats = HouseOwner._get_field_title("house")
self.assertEqual(hats, "Houses")
houses = HouseOwner._get_field_title("house")
self.assertEqual(houses, "Houses")

def test_verbose_name(self):
only_words = FamousLastWords._get_field_title("words")
Expand Down Expand Up @@ -463,6 +463,10 @@ def test_get_defaults_from_free_text_and_foreign_key(self):
def test_get_defaults_from_free_text_and_foreign_key_lambda(self):
self.assertEqual("spaniel", HoundOwner._get_field_default("dog"))

def test_get_defaults_from_reverse_foreign_key(self):
houses = HouseOwner._get_field_default("house")
self.assertEqual([], houses)

def test_get_defaults_from_ftfk_when_there_are_no_defaults(self):
self.assertEqual(None, Colour._get_field_default("name"))

Expand Down Expand Up @@ -860,4 +864,4 @@ def test_str(self):
class UserProfileTestCase(OpalTestCase):
def test_create(self):
user = User.objects.create()
self.assertTrue(bool(user.profile))
self.assertTrue(bool(user.profile))

0 comments on commit a59a303

Please sign in to comment.