我正试着和工厂男孩一起为这些车型制造工厂:
class Course(models.Model):
group = models.OneToOneField(Group)
title = models.CharField(max_length=1024)
class CourseInfo(models.Model):
course = models.OneToOneField(Course, related_name='info')
starttime = models.TimeField(null=True, blank=True)
endtime = models.TimeField(null=True, blank=True)
以下是我的工厂:
^{pr2}$现在,当我调用CourseFactory()
或CourseInfoFactory()
时,我得到一个IntegrityError:
IntegrityError: UNIQUE constraint failed: courseaffils_courseinfo.course_id
我的工厂怎么了?我怎样才能解决这个问题?在
如果我在CourseInfoFactory上执行course = factory.RelatedFactory('courseaffils.tests.factories.CourseFactory')
,那么我会得到如下错误:
IntegrityError: NOT NULL constraint failed: courseaffils_courseinfo.course_id
如果您需要更多详细信息,下面是我正在使用的实际代码:
https://github.com/ccnmtl/django_courseaffils/blob/master/courseaffils/models.py
问题是
CourseFactory()
已经创建了一个CourseInfo对象。我只删除了info = factory.RelatedFactory(CourseInfoFactory, 'course')
行就解决了这个问题,现在CourseInfo工厂是不必要的-我可以通过在course.info
处获取创建的对象来测试CourseInfo。在只需将django_get_或_create添加到课程信息工厂的元类中即可:
此解决方案避免了在组字段中存在唯一约束的问题,即获取对象,而不是创建对象(如果存在)。在
您可以在这里查看:https://github.com/FactoryBoy/factory_boy/blob/v2.5.2/factory/django.py#L133-L139
相关问题 更多 >
编程相关推荐