I have created a model A:
def g():
return A.objects.get(pk=1)
class A(models.Model):
a = models.IntegerField()
./manage.py makemigrations
./manage.py migrate
then I've added some data:
a = A(a=1)
a.save()
then I have created another model with a ForeignKey field with a default set to g function (that really returns one instance od A) and I was trying to migrate it:
class B(models.Model):
b = models.ForeignKey(A, default=g)
./manage.py makemigrations
...
./manage.py migrate
....
File ".../e/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 627, in get_db_prep_save
prepared=False)
File ".../e/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 907, in get_db_prep_value
value = self.get_prep_value(value)
File ".../p/e/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 915, in get_prep_value
return int(value)
TypeError: int() argument must be a string or a number, not 'A'
Is it expected behaviour or a bug?