Skip to content

Commit

Permalink
Merge pull request #23 from ar45/fix_func_closure
Browse files Browse the repository at this point in the history
Fixed use of outer vars in function build_relation
  • Loading branch information
Brobin committed Sep 16, 2015
2 parents d37bbb7 + aa99fe4 commit f51fa6d
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions django_seed/seeder.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ def __init__(self, model):
self.model = model
self.field_formatters = {}

@staticmethod
def build_relation(field, related_model):
def func(inserted):
if related_model in inserted and inserted[related_model]:
pk = random.choice(inserted[related_model])
return related_model.objects.get(pk=pk)
else:
message = 'Field {} cannot be null'.format(field)
raise SeederException(message)
return func

def guess_field_formatters(self, faker):
"""
Gets the formatter methods for each field using the guessers
Expand All @@ -28,17 +39,7 @@ def guess_field_formatters(self, faker):
for field in model._meta.fields:
field_name = field.name
if isinstance(field, (ForeignKey, ManyToManyField, OneToOneField)):
related_model = field.rel.to

def build_relation(inserted):
if related_model in inserted and inserted[related_model]:
pk = random.choice(inserted[related_model])
return related_model.objects.get(pk=pk)
else:
message = 'Field {} cannot be null'.format(field)
raise SeederException(message)

formatters[field_name] = build_relation
formatters[field_name] = self.build_relation(field, field.rel.to)
continue

if isinstance(field, AutoField):
Expand Down

0 comments on commit f51fa6d

Please sign in to comment.