{{{
class A(models.Model):
b = models.ForeignKey('B', null=True)
name = models.CharField(max_length=255)
class B(models.Model):
name = models.CharField(max_length=255)
}}}
The following code reproduces the problem:
{{{
a = A(name="Test A")
a.b = B(name="Test B")
a.b.save()
a.save()
a = A.objects.get(id=a.id)
assert a.b is not None
}}}
The assert fails! As I look inside the code, the field `b_id` is set only
when `a.b` is being set. So, the workaround is:
{{{
a = A(name="Test A")
a.b = B(name="Test B")
a.b.save()
a.b = a.b # workaround
a.save()
a = A.objects.get(id=a.id)
assert a.b is not None
}}}
Now it works as expected.
Is it a bug or a feature? I can't find anything in the docs.
If it is a bug, I guess the object should have a list of which objects are
pointing to it. So, when it is added, it should updated everyone id field.
--
Ticket URL: <https://code.djangoproject.com/ticket/21401>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/21401#comment:1>
* status: new => closed
* resolution: => duplicate
Comment:
Duplicate of #10811
--
Ticket URL: <https://code.djangoproject.com/ticket/21401#comment:2>