2017-10-10 14 views
0

나는 이것을 이해하려고 노력하는 두뇌를 골라 내었으므로 지금 커뮤니티에 도움을 요청합니다.Django의 무작위 옵션 드롭 다운 양식

나는 장고에서 양식을 만들기 위해 모델을 사용하고 있으며 드롭 다운 선택 사항 중 몇 가지에 임의 옵션을 추가하려고합니다.

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

는 내가 뭘하려고하는 것은 추가입니다

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 : 여기

내가 함께 일하고 있어요 무엇에 대한 일반적인 생각이다 사용자가 Random을 선택하는 방법은 다른 값 중 하나를 반환합니다. 다른 방법을 많이 시도했지만 대부분 오류가 반환되었습니다. random.choice()로 함수를 생성하고 그것을 밀어 넣으면 작동하는 것처럼 보였지만 어떤 이유로 항상 같은 값을 반환했습니다.

도움이 될 것입니다.

+0

당신은 양식 필드 대신 ModelField에'choices' 인수를 시도해야한다, 그것은 더 다재다능 동적으로 선택을 생성하는 호출을 받아들입니다. –

+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()