Opened 13 years ago
Closed 13 years ago
#16511 closed Bug (invalid)
Problem with import and GFK
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | contrib.contenttypes | Version: | 1.3 |
Severity: | Normal | Keywords: | import, genericforeignkey, genericrelation |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello,
I have an error "Cannot import name <model name>" and find out why. It seems a bit strange so I report it as a bug.
Description:
We have two apps: x and y. And two Models: A (in x) and B (in y)
B has a generic foreign key
A has generic relation to B
I added this line to y.models:
from x.models import A
And Django raises error: "Cannot import name A" when I try to use python manage.py commands.
I needed this import line because I wanted to add third model - C in y.models, which would have a foreignkey to A
I've tested it also in a new empty django project and it works (hmm, in fact doesn't work) exactly that way.
Source:
x.models:
from django.db import models
from django.contrib.contenttypes import generic
from y.models import B
class A:
b_rel = generic.GenericRelation(B)
y.models:
from django.db import models
from django.contrib.contenttypes import generic
from x.models import A
class B:
content_object = generic.GenericForeignKey()
class C:
a = models.ForeignKey(A)
Removing import of A (and respectivly, the foreignkey to A in C) fixes the problem. I think it shouldn't be like that. I don't want to split application y to store C in separate file.
If it's a known problem I'm sorry, I've searched.
Attachments (2)
Change History (3)
by , 13 years ago
comment:1 by , 13 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
This is not a bug in Django, it's a straightforward circular import issue (and the message is from Python, not from Django). Django provides a way to do what's needed to avoid the circular import when you have interdependent models in different files (see https://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.ForeignKey). Also, please post to django-users or try the #django IRC channel before assuming something you don't understand is a bug in Django; this tracker is not a support forum.
x.models