【问题标题】:Random Option In Django Drop Down FormDjango下拉表单中的随机选项
【发布时间】:2017-10-10 08:10:32
【问题描述】:

我一直在努力解决这个问题,所以现在我向社区寻求帮助。

我正在使用模型在 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 的方法,它会返回其他值之一。我尝试了很多不同的方法,但大多数都返回了错误。当我使用 random.choice() 创建一个函数并推动它通过它似乎工作,但由于某种原因总是返回相同的值。

任何帮助将不胜感激!

【问题讨论】:

  • 您应该尝试在 FormField 中使用 choices 参数而不是 ModelField,它更通用,并且接受可调用以动态生成选择。
  • @KlausD。是正确的。在相应表单字段的选项中添加“随机”选项,并在表单的clean_fieldname 方法中处理该额外选项。

标签: python django forms models dropdown


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2017-11-19
    • 2022-11-10
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    相关资源
    最近更新 更多