本地字段与名称相似的字段发生冲突 [英] Local field clashes with field of similar name
本文介绍了本地字段与名称相似的字段发生冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试添加一个新的数据库模型,该模型可以让我分组开支,但是在运行python manage.py makemigrations时却遇到了这个问题。
I'm trying to add a new database model that will let me "group" expenses, but am running across this issue when running python manage.py makemigrations
我的虚拟环境如下所示:
My virtual environment looks like this:
Django==1.7.3
argparse==1.2.1
django-braces==1.4.0
django-chartit==0.1
django-crispy-forms==1.4.0
django-debug-toolbar==1.2.2
psycopg2==2.6
six==1.9.0
sqlparse==0.1.14
wsgiref==0.1.2
这是回溯:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute
output = self.handle(*args, **options)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 111, in handle
convert_apps=app_labels or None,
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 42, in changes
changes = self._detect_changes(convert_apps, graph)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/db/migrations/autodetector.py", line 109, in _detect_changes
self.old_apps = self.from_state.render(ignore_swappable=True)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 67, in render
model.render(self.apps)
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/db/migrations/state.py", line 316, in render
body,
File "/home/jeff/.virtualenvs/ggc/local/lib/python2.7/site-packages/django/db/models/base.py", line 229, in __new__
'base class %r' % (field.name, name, base.__name__)
django.core.exceptions.FieldError: Local field u'id' in class 'ExpenseGroup' clashes with field of similar name from base class 'Asset
'
这是模型代码-我尝试将ExpenseGroup模型缩减为只有groupName作为字段,但出现相同的错误。我缺少什么?
This is the model code - I've tried cutting the ExpenseGroup model down to only the groupName as a field but I get the same error. What am I missing?
class Asset(TimeStampedModel):
assetName = models.CharField(max_length=255)
assetAddress = models.CharField(max_length=255)
slug = models.SlugField(max_length=255, blank=True)
class Meta:
unique_together = ('assetName', 'assetAddress')
def __str__(self):
return self.assetName
def save(self, *args, **kwargs):
self.slug = slugify(self.assetName)
super(Asset, self).save(*args, **kwargs)
class ExpenseGroup(TimeStampedModel):
groupName = models.CharField(max_length=255, blank=False)
expenseName = models.ForeignKey(Expense, related_name='expenseGroup')
class Meta:
unique_together = ('expenseName', 'groupName')
def __str__(self):
return self.groupName
def save(self, *args, **kwargs):
return super(ExpenseGroup, self).save(*args, **kwargs)
class Expense(TimeStampedModel):
assetName = models.ForeignKey(Asset, related_name='assetExpense')
category = models.ForeignKey(ExpenseCategory, related_name='expenseCategory')
expensePeriod = models.DateTimeField(blank=False)
expenseName = models.CharField(max_length=255, blank=False)
expenseAmount = models.DecimalField(max_digits=20, decimal_places=2, blank=True)
class Meta:
unique_together = ('expenseName', 'expensePeriod')
def __str__(self):
return self.expenseName
def save(self, *args, **kwargs):
super(Expense, self).save(*args, **kwargs)
推荐答案
这是Django 1.7.3的错误,升级到最新版本即可(当时为1.7.5) )
It's a bug with Django 1.7.3, upgrade to the latest and you'll be fine (1.7.5 at the time)
这篇关于本地字段与名称相似的字段发生冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文