2014-10-11 46 views
0

所以,我曾经在同一个应用程序中工作正常,但是当我将两个模型移动到不同的类时,我无法获得ForeignKey似乎工作。有问题的模式:Django TypeError:'bar'是这个函数的无效关键字参数

from app1.models import Bar 

class Foo(models.Model): 
    name = models.CharField('...............') 
    bar = models.ForeignKey(Bar, editable=False, verbose_name=_('Bar')) 

但是当我尝试:

>>>f = Foo(name='name', bar=existing_bar).save() 

我得到使用的MongoDB和Django

TypeError: 'bar' is an invalid keyword argument for this function 

林。我不明白它为什么在同一个应用程序中完美地工作,但现在不是:/

我注意到在我的旧集合中,foo文档有一个bar_id字段,现在没有,因为它的价值。

+0

你能提供实际的模型,而不是模糊的版本? – skzryzg 2014-10-11 12:27:14

回答

0

我真的不知道为什么发生这种情况,有可能是在Django文档中提到的东西,但现在你可以提供一个__init__以保持它的工作 -

的蟒蛇3+

class Foo(models.Model): 
    name = models.CharField('...............') 
    bar = models.ForeignKey(Bar, editable=False, verbose_name=_('Bar')) 

    def __init__(self, *args, bar=None, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.bar = bar 

为Python 2.6+

class Foo(models.Model): 
    name = models.CharField('...............') 
    bar = models.ForeignKey(Bar, editable=False, verbose_name=_('Bar')) 

    def __init__(self, *args, bar=None, **kwargs): 
     super(Foo, self).__init__(*args, **kwargs) 
     self.bar = bar 
相关问题