如何创建一个自动生成所有字段的factory_boy工厂?
我正在尝试把Django的代码从milkman迁移到factory_boy。
假设我有一个模型:
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
number = models.IntegerField()
我写了一个工厂:
import factory
class BlogPostFactory(factory.Factory):
class Meta:
model = BlogPost
但是,factory_boy默认生成的这些字段的值是无效的:
In [17]: bp = BlogPostFactory.build()
In [18]: print "title: %r content: %r number: %r" % (bp.title, bp.content, bp.number)
title: u'' content: u'' number: None
In [19]: bp.full_clean()
ValidationError: {'content': [u'This field cannot be blank.'], 'number': [u'This field cannot be null.'], 'title': [u'This field cannot be blank.']}
而milkman可以自动为这些字段生成有效的值:
In [22]: bp = milkman.deliver(BlogPost)
In [23]: print "title: %r content: %r number: %r" % (bp.title, bp.content, bp.number)
title: 'A8pLAni9xSTY93QJzSi5yY8SGQikL7YGrcTZVViAFS72eqG2bLWHSh0lNLSA2FbH7kSCXDktCQxUO288HTXdYUcRNUikoH4LQ4QHmy6XRwrRzbbmwXL6pLW7tapJM3FTpx8oBbTUw7nCOZew73xjWsID666FKh05ychptiF2peEZHdQd6gnHqXtFkL5kyEIhFvinOCmS' content: 'RUcSHCxs' number: -709949545
我知道factory_boy提供了模糊属性,但你必须明确使用它们,或者使用大量的模型/字段反射。
有没有可能用factory_boy创建一个工厂,让所有字段都自动填充合法的值呢?