Skip to content
This repository has been archived by the owner on Oct 22, 2019. It is now read-only.

Commit

Permalink
Merge pull request #266 from rygwdn/fix-nullable-foreignkey
Browse files Browse the repository at this point in the history
Fix related() with nullable foreignkeys on django 1.9.
  • Loading branch information
vandersonmota committed Jan 4, 2016
2 parents 51c8f2c + f384211 commit c7aa8d9
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 1 deletion.
2 changes: 1 addition & 1 deletion model_mommy/mommy.py
Expand Up @@ -371,7 +371,7 @@ def _handle_one_to_many(self, instance, attrs):
for k, v in attrs.items():
if django.VERSION >= (1, 9):
manager = getattr(instance, k)
manager.set(v, bulk=False)
manager.set(v, bulk=False, clear=True)
else:
setattr(instance, k, v)

Expand Down
6 changes: 6 additions & 0 deletions test/generic/models.py
Expand Up @@ -257,6 +257,12 @@ class BaseModelForNext(models.Model):
class BaseModelForList(models.Model):
fk = FakeListField()

class Movie(models.Model):
title = models.CharField(max_length=30)

class CastMember(models.Model):
movie = models.ForeignKey(Movie, related_name='cast_members')
person = models.ForeignKey(Person)

if VERSION < (1, 4):
class DummyIPAddressFieldModel(models.Model):
Expand Down
10 changes: 10 additions & 0 deletions test/generic/mommy_recipes.py
Expand Up @@ -75,3 +75,13 @@
dog_lady = Recipe(Person,
dog_set = related('dog', other_dog)
)

nullable_related = Recipe('generic.DummyBlankFieldsModel',
dummynullfieldsmodel_set=related(Recipe('generic.DummyNullFieldsModel'))
)

cast_member = Recipe('generic.CastMember', person=foreign_key(person))

movie_with_cast = Recipe('generic.Movie',
cast_members=related(cast_member, cast_member)
)
8 changes: 8 additions & 0 deletions test/generic/tests/test_recipes.py
Expand Up @@ -375,6 +375,14 @@ def test_related_models_recipes(self):
self.assertEqual(lady.dog_set.all()[0].breed, 'Pug')
self.assertEqual(lady.dog_set.all()[1].breed, 'Basset')

def test_nullable_related(self):
nullable = mommy.make_recipe('test.generic.nullable_related')
self.assertEqual(nullable.dummynullfieldsmodel_set.count(), 1)

def test_chained_related(self):
movie = mommy.make_recipe('test.generic.movie_with_cast')
self.assertEqual(movie.cast_members.count(), 2)


class M2MFieldTestCase(TestCase):
def test_create_many_to_many(self):
Expand Down

0 comments on commit c7aa8d9

Please sign in to comment.