#28173: Occasional FieldError for field that really does exist
--------------------------------+--------------------------------------
Reporter: Evan Heidtmann | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 1.9
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
--------------------------------+--------------------------------------
Description changed by Evan Heidtmann:
Old description:
> My app, running in production with `uwsgi`, very occasionally will crash
> because of a FieldError on a (valid) reverse ForeignKey relationship
> field. Without any code changes, other requests will succeed. Tests that
> cover this code path always pass.
>
> The two models are in different apps. Both apps are listed in
> `INSTALLED_APPS` and the calling module imports both `models` modules at
> top level. One of the models is "replaceable" but I'm using the original
> model (it's oauth2_provider.Application)
>
> {{{#!python
> # app1/models.py
> class A(models.Model):
> name = models.CharField(max_length=20)
>
> def get_A_model():
> # ... some thirdparty code for replaceable models ...
>
> # app2/models.py
> class B(models.Model):
> myname = models.CharField(max_length=20)
> a = models.ForeignKey('app1.A')
>
> # app2/views.py
> import app1.models as app1_models
> from . import models
>
> def view(request):
> # This line crashes with "FieldError: Cannot resolve keyword 'b' into
> field. Choices are: ..."
> qs = get_A_model().objects.filter(b__myname='larry')
> }}}
>
> This smells like some kind of deployment issue (code loading too late or
> not at all?) but if so, I don't know how to debug. Thanks for taking a
> look and let me know what I can do to gather more helpful information.
New description:
My app, running in production with `uwsgi`, very occasionally will crash
because of a FieldError on a (valid) reverse ForeignKey relationship
field. Without any code changes, other requests will succeed. Tests that
cover this code path always pass.
The two models are in different apps. Both apps are listed in
`INSTALLED_APPS` and the calling module imports both `models` modules at
top level. One of the models is "replaceable" but I'm using the original
model (it's oauth2_provider.Application)
{{{#!python
# app1/models.py
class A(models.Model):
name = models.CharField(max_length=20)
def get_A_model():
# ... some thirdparty code for replaceable models ...
# app2/models.py
class B(models.Model):
myname = models.CharField(max_length=20)
a = models.ForeignKey('app1.A')
# app2/views.py
import app1.models as app1_models
from . import models
def view(request):
# This line crashes with "FieldError: Cannot resolve keyword 'b' into
field. Choices are: ..."
qs = app1_models.get_A_model().objects.filter(b__myname='larry')
}}}
This smells like some kind of deployment issue (code loading too late or
not at all?) but if so, I don't know how to debug. Thanks for taking a
look and let me know what I can do to gather more helpful information.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/28173#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/069.4308594485b48ad76b80d9b2357b2f64%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.