2017-10-10 18 views
0

我一直在挑選我的大腦,試圖弄清楚這一點,所以現在我轉向社區尋求幫助。在Django下拉表單中的隨機選項

我正在使用模型在Django中創建窗體,並且我想爲隨機選項添加一些下拉選項。

這裏是我工作的總體思路:

models.py

Character(models.Model): 
    name = models.CharField(max_length=255,unique=True) 
    age = models.PositiveIntegerField(default=0) 
    gender = models.CharField(max_length=20,choices=creation_choices.GENDERS) 
    race = models.CharField(max_length=500,choices=creation_choices.RACE) 

creation_choices.py

GENDERS = (
    ('male',"Male"), 
    ("female","Female"), 
    ("unknown","Unknown"), 
) 
RACE = (
    ('human','Human'), 
    ('elf','Elf'), 
    ('dwarf','Dwarf'), 
) 

我所試圖做的是添加用戶選擇隨機的方式,並返回其他值之一。我嘗試了很多不同的方法,但大多數都返回了一個錯誤。當我用random.choice()創建一個函數,並通過它推動它似乎工作,但由於某種原因總是返回相同的值。

任何幫助將不勝感激!

+0

你應該嘗試'choices'參數傳遞給FormField而不是ModelField,它更靈活,接受一個可調用的動態生成的選擇。 –

+0

@KlausD。是對的。爲相應表單字段的選項添加一個「隨機」選項,並在表單的'clean_fieldname'方法中處理該額外選項。 – schwobaseggl

回答

0

添加(None,'Random')到選擇集和有問題的模型字段聲明 default=select_random_genderdefault=select_random_race以及blank=False, null=False

聲明這些功能:

def select_random_gender(): 
    selection = random.choice(GENDERS)[0] 
    return selection if selection else select_random_gender() 

def select_random_race(): 
    selection = random.choice(RACE)[0] 
    return selection if selection else select_random_race() 
相關問題