2015-03-13 36 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) 
相關問題