gpt4 book ai didi

python - factory_boy 对象似乎缺少主键

转载 作者:太空狗 更新时间:2023-10-29 22:04:12 26 4
gpt4 key购买 nike

当我创建 factory_boy 对象时,该对象似乎没有主键,我不确定为什么。这是我的模型和工厂:

# models.py
from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
# UserProfile is a subset table of User. They have a 1:1 relationship.
user = models.ForeignKey(User, unique=True)
gender = models.CharField(max_length=1)

# factories.py
import factory
from django.contrib.auth.models import User
from .models import UserProfile

class UserFactory(factory.Factory):
FACTORY_FOR = User
username = 'jdoe'

class UserProfileFactory(factory.Factory):
FACTORY_FOR = UserProfile
user = factory.lazy_attribute(lambda a: UserFactory())
gender = 'M'

现在根据factory_boy documentation在关联上,如果我创建一个用户实例,我应该得到一个“id”字段。但是,我没有。这是我得到的(在解释器中):

>>> from app.factories import UserFactory, UserProfileFactory
>>> user = UserFactory()
>>> user.username # This result is correct
'jdoe'
>>> user.id is None # User should be 'saved' and so this should return False
True

类似地:

>>> user_profile = UserProfileFactory()
>>> user_profile.gender # This is OK
'M'
>>> user_profile.user # This is OK
<User: jdoe>
>>> user_profile.id is None # Why isn't this False?
True

文档说这些 user.id 和 user_profile.id 命令应该返回“False”而不是“True”,因为我正在创建(而不是构建)factory_boy 实例。我在这里错过了什么?为什么我在创建这些实例时没有获得“id”值?似乎我可以获得 id 的唯一方法是在我的工厂中显式创建一个“id”属性。但是,我在文档中的任何地方都看不到这样做,所以我认为这不是您应该做的。

谢谢。

最佳答案

对于 django 支持,您需要使用 DjangoModelFactory:

https://factoryboy.readthedocs.org/en/latest/orms.html#the-djangomodelfactory-subclass

关于python - factory_boy 对象似乎缺少主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com