I'm using Django 1.5 and I'm trying to make an application work with
any custom user model.

The issue is that I want to be able to test the app as well, but I
can't find a way to make `ForeignKey` model fields to test correctly
using custom user models. When I run the test case attached below, I
get this error:

    ValueError: Cannot assign "<NewCustomUser: al...@bob.net>":
"ModelWithForeign.user" must be a "User" instance.

This is the file I'm using for testing:

    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': 'al...@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()

I'm referencing the user model in the `ForeignKey` argument list as
described in 
https://docs.djangoproject.com/en/dev/topics/auth/customizing/#django.contrib.auth.get_user_model,
but using `get_user_model` there doesn't change anything, as the
`user` attribute is evaluated before the setting change takes place.
Is there a way to make this ForeignKey play nice with testing when I'm
using custom user models?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to