python - Django RadioSelect 从模型中选择

标签 python django forms model radio-button

假设我的 Django 应用程序中有以下模型:

class Gift_Card(models.Model):
    title = models.CharField(blah blah)
    company = models.CharField(blah blah)
    denomination = models.ForeignKey('Denomination')

class Denomination(models.Model):
    is_subscription = models.BooleanField(blah blah)
    is_money = models.BooleanField(blah blah)
    amount = models.IntegerField(blah blah)

写得不好,但这就是我想要的:

  • 通用礼品卡模型
  • 支持多种类型的金额(1 年订阅卡、20 美元礼品卡等)

我有一个表单,用于从我的 Django 应用程序请求卡片,并且有一个数量字段(足够简单),一个礼品卡名称字段(用于验证,同样,足够简单),我希望有一个 radio 选择字段。 radio 选择字段应填充与手头礼品卡相关的面额模型。但是,我不确定该怎么做。有帮助吗?

最佳答案

这是一个小部件级选择,而不是字段级选择,内置的 RadioSelect 小部件完全可以满足您的需求:

https://docs.djangoproject.com/en/dev/ref/forms/widgets/#radioselect

无论如何,假设您喜欢它的渲染选项。如果没有,您可以子类化,或者在足够新的版本上循环遍历模板中的选项。

要使用它,请使用指定了 widget 参数的 ModelChoiceField:

denomination = forms.ModelChoiceField(queryset=Denomination.objects.all(), widget=forms.RadioSelect)

或者,如果您使用的是 ModelForm:

class GiftCardForm(forms.ModelForm):
    class Meta:
        model = Gift_Card
        widgets = {'denomination': forms.RadioSelect}

关于python - Django RadioSelect 从模型中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20427701/

相关文章:

python - 如何在python中向长对象添加美元符号

php - 如何实现可复用的PHP Form处理逻辑?

forms - symfony 表单如何在 View 中呈现

javascript - IE 错误触发点击 2 个按钮?

python - 如何使用 Google Drive API v3 在 Python 中上传到共享云端硬盘?

python - 如何在 Windows 中的 Python 3 中制定端口转发规则?

python - 具有 Lambda 函数的 HSTACK CNN 输出

python - Graphviz - 属性错误 : object has no attribute 'partition'

python - 如何在 django 模板标签中设置全局可访问的上下文变量?

python - 在 Django 中覆盖动态 CSS