Django factory using a factory gives "Database access not allowed"

Я хочу создать пользовательский_профиль из фабрики UserProfileFactory, которая использует объект User из UserFactory.

ошибка: RuntimeError: Доступ к базе данных не разрешен, используйте метку "django_db" или фиксы "db" или "transactional_db", чтобы разрешить его.

вот соответствующие классы.

from django.contrib.auth import get_user_model
from factory import Faker, post_generation
from factory.django import DjangoModelFactory

class UserFactory(DjangoModelFactory):

    username = Faker("user_name")
    email = Faker("email")
    name = Faker("name")

    @post_generation
    def password(self, create: bool, extracted: Sequence[Any], **kwargs):
        password = (
            extracted
            if extracted
            else Faker(
                "password",
                length=42,
                special_chars=True,
                digits=True,
                upper_case=True,
                lower_case=True,
            ).evaluate(None, None, extra={"locale": None})
        )
        self.set_password(password)

    class Meta:
        model = get_user_model()
        django_get_or_create = ["username"]



class UserProfileFactory(DjangoModelFactory):
    user = UserFactory.create()  #### the problem line ###
    country = Faker("country") # which laws apply
    birth_date = Faker("date_of_birth") # in the US you can't collect data from <13yo's

    class Meta:
        model = UserProfile

и в tests/test.py

class TestUserProfileDetailView():
    def test_create_userprofile(self):
        """creates an APIRequest and uses an instance of UserProfile to test a view user_detail_view"""

        factory = APIRequestFactory()
        request = factory.get('/api/userprofile/')
        request.user = UserProfileFactory.create()  # problem starts here #
        response = user_detail_view(request)
        self.assertEqual(response.status_code, 200)
Вернуться на верх