【发布时间】:2013-02-28 11:35:42
【问题描述】:
我正在使用 Django 1.5,并且正在尝试使应用程序与任何自定义用户模型一起工作。我已将应用程序更改为在任何地方使用get_user_model,并且应用程序本身目前没有出现任何问题。
问题是我也希望能够测试应用程序,但我找不到使ForeignKey 模型字段使用自定义用户模型正确测试的方法。当我运行下面附加的测试用例时,我收到了这个错误:
ValueError: Cannot assign "<NewCustomUser: alice@bob.net>": "ModelWithForeign.user" must be a "User" instance.
这是我用于测试的文件:
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.auth.tests.custom_user import CustomUser, CustomUserManager
from django.db import models
from django.test import TestCase
from django.test.utils import override_settings
class NewCustomUser(CustomUser):
objects = CustomUserManager()
class Meta:
app_label = 'myapp'
class ModelWithForeign(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
@override_settings(
AUTH_USER_MODEL = 'myapp.NewCustomUser'
)
class MyTest(TestCase):
user_info = {
'email': 'alice@bob.net',
'date_of_birth': '2013-03-12',
'password': 'password1'
}
def test_failing(self):
u = get_user_model()(**self.user_info)
m = ModelWithForeign(user=u)
m.save()
我在ForeignKey 参数列表中引用用户模型,如here 所述,但使用get_user_model 并没有改变任何东西,因为在设置更改发生之前评估user 属性。当我使用自定义用户模型时,有没有办法让这个 ForeignKey 与测试相得益彰?
【问题讨论】:
标签: python django django-testing django-1.5