[Django] #21215: Migrations for inherited models

14 views
Skip to first unread message

Django

unread,
Oct 3, 2013, 7:41:05 AM10/3/13
to django-...@googlegroups.com
#21215: Migrations for inherited models
----------------------------+----------------------------------------
Reporter: anant90@… | Owner:
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Keywords: migrations inherited model
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+----------------------------------------
I have a model BankAccount which inherits from another model PaymentType
as shown below:

{{{
class PaymentType(BaseModel):
user = models.ForeignKey(StupaUser, related_name =
"%(app_label)s_%(class)s_related")

class BankAccount(PaymentType):
account_number = models.CharField(max_length=20)
bank_name = models.CharField(max_length=40)
nickname = models.CharField(max_length=30)
uri = models.CharField(max_length=200, null=True)
is_valid = models.BooleanField(default=True)
}}}

When I try running python manage.py makemigrations <app_name>, I get
"ValueError: No field called user on model BankAccount"

Here's the stack trace:
{{{
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/anant/Github/django/django/core/management/__init__.py",
line 397, in execute_from_command_line
utility.execute()
File "/Users/anant/Github/django/django/core/management/__init__.py",
line 390, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/anant/Github/django/django/core/management/base.py", line
242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/anant/Github/django/django/core/management/base.py", line
289, in execute
output = self.handle(*args, **options)
File
"/Users/anant/Github/django/django/core/management/commands/makemigrations.py",
line 52, in handle
changes = autodetector.changes(graph=loader.graph,
trim_to_apps=app_labels or None)
File "/Users/anant/Github/django/django/db/migrations/autodetector.py",
line 34, in changes
changes = self._detect_changes()
File "/Users/anant/Github/django/django/db/migrations/autodetector.py",
line 140, in _detect_changes
field = model_state.get_field_by_name(field_name),
File "/Users/anant/Github/django/django/db/migrations/state.py", line
177, in get_field_by_name
raise ValueError("No field called %s on model %s" % (name, self.name))
ValueError: No field called user on model BankAccount
}}}

Is this expected? Why can't I use migrations for inherited models?

--
Ticket URL: <https://code.djangoproject.com/ticket/21215>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Oct 3, 2013, 10:04:07 AM10/3/13
to django-...@googlegroups.com
#21215: Migrations for inherited models
-------------------------------------+-------------------------------------

Reporter: anant90@… | Owner:
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Resolution:
Keywords: migrations | Triage Stage:
inherited model | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by timo):

* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0


Comment:

I'm unable to reproduce this with your given models (changing `BaseModel`
to `models.Model` and the user FK `django.contrib.auth.models.User` to a
different model).

Are you running with the latest master? (migrations is under active
development)

If so, could you provide a minimal models file to reproduce?

--
Ticket URL: <https://code.djangoproject.com/ticket/21215#comment:1>

Django

unread,
Oct 4, 2013, 9:05:35 AM10/4/13
to django-...@googlegroups.com
#21215: Migrations for inherited models
-------------------------------------+-------------------------------------

Reporter: anant90@… | Owner:
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Resolution:
Keywords: migrations | Triage Stage:
inherited model | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by anant90@…):

Thanks for the quick reply. I made a new testapp with the following
models.py file:

```
from django.db import models
from django.contrib.auth.models import User, UserManager

# Create your models here.
class PaymentType(models.Model):
user = models.ForeignKey(User, related_name =
"%(app_label)s_%(class)s_related")

class BankAccount(PaymentType):
account_number = models.CharField(max_length=20)
bank_name = models.CharField(max_length=40)
nickname = models.CharField(max_length=30)

uri = models.CharField(max_length=200, null=True) #balanced uri
is_valid = models.BooleanField(default=True)
```

Running python manage.py makemigrations testapp gives the following
output:

I pulled in the latest django version on master and used pip install -e
django/ for installation. Also, I use virtualenv.

Thanks for your time. Let me know if I'm doing something wrong here.

--
Ticket URL: <https://code.djangoproject.com/ticket/21215#comment:2>

Django

unread,
Oct 4, 2013, 10:13:21 AM10/4/13
to django-...@googlegroups.com
#21215: Migrations for inherited models
-------------------------------------+-------------------------------------

Reporter: anant90@… | Owner:
Type: Bug | Status: new
Component: Migrations | Version: master
Severity: Normal | Resolution:
Keywords: migrations | Triage Stage:
inherited model | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by timo):

Using those test models, I'm able to successfully generate a migrations
file so I'm not sure what's going on.

--
Ticket URL: <https://code.djangoproject.com/ticket/21215#comment:3>

Django

unread,
Oct 5, 2013, 3:56:51 AM10/5/13
to django-...@googlegroups.com
#21215: Migrations for inherited models
-------------------------------------+-------------------------------------
Reporter: anant90@… | Owner:
Type: Bug | Status: closed
Component: Migrations | Version: master
Severity: Normal | Resolution: invalid

Keywords: migrations | Triage Stage:
inherited model | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by anant90@…):

* status: new => closed
* resolution: => invalid


Comment:

Thanks for your help. I was able to get it working with a clean django
installation. Closing this issue as invalid.

--
Ticket URL: <https://code.djangoproject.com/ticket/21215#comment:4>

Reply all
Reply to author
Forward
0 new messages