私は 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
で説明したように引数リストでユーザー モデルを参照していますが、設定変更が行われる前に属性が評価されるため、そこを使用しても何も変わりません。カスタム ユーザー モデルを使用しているときに、この ForeignKey をテストでうまく機能させる方法はありますか?get_user_model
user