#12587 closed (duplicate)
Related fields when using multiple databases and different managers
| Reported by: | aprilmay | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Keywords: | multiple related | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Let's take the case:
- 2 databases in settings.py (default and otherdb)
- 2 model managers, that will be used for managing models on different DBs:
class Manager1(models.Manager):
def __init__(self):
super(Manager1, self).__init__()
self._db = 'default'
class Manager2(models.Manager):
def __init__(self):
super(Manager2, self).__init__()
self._db = 'otherdb'
- 2 models using a manager each, and a relation between the 2:
class MyModel1(models.Model):
objects = Manager1()
class MyModel2(models.Model):
objects = Manager2()
rel_to_model1 = models.OneToOneField(MyModel1)
In that case the relations fail:
a_model2 = MyModel2.objects.all()[0] a_model1 = a_model2.rel_to_model1
The last line raises an error because it uses the manager for model2 for searching model1.
Also,
a_model1 = MyModel1.objects.all()[0] a_model2 = a_model1.mymodel2
The last line raises an error for the same reason than above.
These examples show (and the proposed patch is a fix for) the OneToOneField relation, but other relations might suffer from same kind of issue.
This is dummy code, hope it is good enough.
Attachments (1)
Change History (3)
by , 16 years ago
| Attachment: | related_multiple_db.diff added |
|---|
comment:1 by , 16 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Duplicate of #12540. Although I'm sure the patch you have provided solves the problem as you see it, the general problem will require a slightly more general solution. See the discussion referenced in #12540 for more details.