Opened 11 years ago
Closed 11 years ago
#23851 closed Bug (worksforme)
'GenericForeignKey' object has no attribute 'deconstruct'
| Reported by: | corebreaker | Owned by: | nobody |
|---|---|---|---|
| Component: | contrib.contenttypes | Version: | 1.7 |
| Severity: | Normal | Keywords: | |
| Cc: | corebreaker | Triage Stage: | Unreviewed |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
The class django.contrib.contenttypes.generic.GenericForeignKey is a field type for models, used for my example by application cmsplugin_rt.rt_carousel, application that i modified in order to use it in Django 1.7 .
But class django.contrib.contenttypes.generic.GenericForeignKey has not the required method deconstruct.
I posted this ticket cause class django.contrib.contenttypes.generic.GenericForeignKey could be used by others as field in models and the exception could be raised for this reason.
The lack is just that class django.contrib.contenttypes.generic.GenericForeignKey has not implemented the required method deconstruct. This method should be added if not, we have to subclass GenericForeignKey at every time we use it as field in models. It's just a big work to do each time.
Attachments (2)
Change History (10)
comment:1 by , 11 years ago
| Severity: | Release blocker → Normal |
|---|
comment:2 by , 11 years ago
| Cc: | added |
|---|---|
| Type: | Uncategorized → Bug |
comment:3 by , 11 years ago
| Description: | modified (diff) |
|---|
comment:4 by , 11 years ago
| Description: | modified (diff) |
|---|
comment:5 by , 11 years ago
by , 11 years ago
| Attachment: | formbug.zip added |
|---|
Django 1.7 project simple example that shows the bug.
comment:6 by , 11 years ago
I joined a Django project that has the bug. Use migrate command to see it. The result is:
Operations to perform:
Synchronize unmigrated apps: staticfiles, messages
Apply all migrations: admin, contenttypes, formbug, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Installing custom SQL...
Installing indexes...
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying formbug.0001_initial...Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/migrate.py", line 160, in handle
executor.migrate(targets, plan, fake=options.get("fake", False))
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 63, in migrate
self.apply_migration(migration, fake=fake)
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 91, in apply_migration
if self.detect_soft_applied(migration):
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/executor.py", line 135, in detect_soft_applied
apps = project_state.render()
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/state.py", line 67, in render
model.render(self.apps)
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/state.py", line 305, in render
body = dict(self.construct_fields())
File "/usr/local/lib/python2.7/dist-packages/django/db/migrations/state.py", line 276, in construct_fields
_, path, args, kwargs = field.deconstruct()
AttributeError: 'GenericForeignKey' object has no attribute 'deconstruct'
I just used GenericForeignKey class as a model field. In Django 1.7, model fields require to implement deconstruct method. But GenericForeignKey has not implemented this method.
comment:7 by , 11 years ago
| Description: | modified (diff) |
|---|
comment:8 by , 11 years ago
| Resolution: | → worksforme |
|---|---|
| Status: | new → closed |
Did you generate the migration file using makemigrations? It seems to be missing most of the models from the sample project. I get an entirely different one if I delete the file you provided and then run makemigrations (GenericForeignKey doesn't appear in the resulting migration). I'll attach it for reference.
by , 11 years ago
| Attachment: | 0001_initial.py added |
|---|
Hi,
How do you get that error message?
From what I've tried, using a
GenericForeignKeyin a model works with migrations and doesn't trigger any particular error.Thanks.