1

出于某种原因,我无法让这个模型彼此建立任何关系?而 Aptana 给了我红线和错误说 Test1 和 Test2 是未定义的变量...起初我认为它只是 aptana 搞砸了所以我决定同步它但它实际上给了我错误说 NameError: name Test1 is not defined?可能是什么原因?提前致谢!

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from userena.models import UserenaBaseProfile

class MyProfile(UserenaBaseProfile):
    user = models.OneToOneField(User, unique=True, verbose_name=_('User'), related_name='my_profile')
    favourite_snack = models.CharField(_('favourite snack'), max_length=5)
    test1 = models.ManyToManyField(Test1)

class Test1(models.Model):
    name = models.CharField(max_length=255, blank=False)
    test2 = models.OneToOneField(Test2)

class Test2(models.Model):
    name = models.CharField()
4

2 回答 2

4

这是定义类的顺序。Python 解释器不进行正向查找这应该可以解决您的问题。

from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from userena.models import UserenaBaseProfile

class Test2(models.Model):
    name = models.CharField()

class Test1(models.Model):
    name = models.CharField(max_length=255, blank=False)
    test2 = models.OneToOneField(Test2)

class MyProfile(UserenaBaseProfile):
    user = models.OneToOneField(User, unique=True, verbose_name=_('User'), related_name='my_profile')
    favourite_snack = models.CharField(_('favourite snack'), max_length=5)
    test1 = models.ManyToManyField(Test1)
于 2013-04-03T20:48:10.060 回答
4

您在实际创建模型之前引用了模型,这就是您遇到undefined错误的原因,使用模型名称作为字符串而不是实际模型:

models.OneToOneField('Test2')

如此处所述:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身

其他方法是根据karthikr提到的引用顺序对文件中的模型进行重新排序。

于 2013-04-03T20:48:58.147 回答