2015-03-13 34 views
1

我想创建一个字符串和数字混合,如下所示:“XL1A”或“PP25”用于我的数据库中的一个字段。如何才能做到这一点?现在我只使用大写字母。在django中用Factory Boy创建一个字符串和数字的混合

class CardFactory(DjangoModelFactory): 
    class Meta: 
     model = Card 
    serial_number = FuzzyText(length=4, chars=string.ascii_uppercase) 

另外,是否有无论如何为Factory Boy中的FuzzX创建随机模式规则,如随机IP地址?

+0

来自catavaran和publysher的解决方案的工作,所以谢谢你们两个。我决定为我的代码使用catavaran的解决方案,因为它的编码较少。但是选择的解决方案是通过附加规则生成随机数据的通用方法。 – Linh 2015-03-13 09:02:33

回答

2

您可以使用通用FuzzyAttribute创建您自己的规则。例如:

def generate_serial(): 
    return random.choice(string.ascii_uppercase) + random.choice(string.digits) 

class CardFactory(DjangoModelFactory): 
    class Meta: 
     model = Card 
    serial_number = FuzzyAttribute(generate_serial) 

这将生成像'Q3'这样的随机序列。由于generate_serial函数只是普通的Python,因此可以使其尽可能地复杂。

1

digits添加到字符列表?

serial_number = FuzzyText(length=4, 
          chars=string.ascii_uppercase + string.digits) 
相关问题