当前位置: 首页 > 知识库问答 >
问题:

单选按钮不显示,而是显示复选框

孟鹤龄
2023-03-14

此表单在基于函数的视图中显示单选按钮,但在我引入基于类的视图时更改为复选框,有什么解决办法。我希望他们再次显示单选按钮

表单.py

class ProductImagesForm(forms.ModelForm):
media = forms.ImageField(label='Image')
featured_image = forms.BooleanField(initial=True) 

def __init__ (self, *args, **kwargs):
    super(ProductImagesForm, self).__init__(*args, **kwargs)
    self.fields['featured_image'] = forms.BooleanField( widget = forms.RadioSelect(attrs={'checked': 'true'}, choices=((self.prefix, 'featured'),)))

models.py

def product_download(instance, filename):
return '%s/%s' %(instance.product.slug, filename)

class ProductImages(models.Model):
    product = models.ForeignKey(Product)
    title = models.CharField(max_length=120)
    media = models.ImageField(upload_to=product_download, 
       width_field='max_width', 
       height_field='max_height',
       null=True, blank=True)
    max_width = models.CharField(max_length=100, null=True, blank=True)
    max_height = models.CharField(max_length=100, null=True, blank=True)
    featured_image = models.BooleanField(default=True)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __unicode__(self):
       return unicode(self.media)

class Meta:
    verbose_name = "product image"
    verbose_name_plural = "product images"

模板

<form enctype="multipart/form-data" action="" method="post"> {% csrf_token %} 
{{ form.as_p }}
{{ formset.management_form }}
<div class="link-formset">
{% for obj in formset %}
{{  obj.as_p }}
{% endfor %}
</div>

views.py

def get(self, *args, **kwargs):
    self.object = self.get_object()
    form_class = self.get_form_class()
    form = self.get_form(form_class)
    formset = ImagesFormset(queryset=ProductImages.objects.none())
    return self.render_to_response(self.get_context_data(form=form, formset=formset))

def post(self, request, *args, **kwargs):
    self.object = self.get_object()
    form_class = self.get_form_class()
    form = self.get_form(form_class)
    formset = ImagesFormset(self.request.POST, self.request.FILES)
    form_valid = form.is_valid()
    formset_valid = formset.is_valid()
    if form_valid and formset_valid:
        seller = self.get_account()
        form.instance.seller = seller
        self.object = form.save()
        media = formset.save(commit=False)
        for img in media:
            img.product = self.object
            img.save()
        formset.save()
        return self.form_valid(form, formset)
    else:
        return self.form_invalid(form, formset)`

共有1个答案

蔚丰
2023-03-14

经过一番认真的研究和认真的留档阅读,我想到了这里,我希望它也能帮助到其他人。

表单.py

   class ProductImagesForm(forms.ModelForm):
        media = forms.ImageField(label='Image')
        featured_image = forms.BooleanField(initial=True)

        def __init__ (self, *args, **kwargs):
            super(ProductImagesForm, self).__init__(*args, **kwargs)
            self.fields['featured_image'] = forms.BooleanField(queryset=ProductImages.objects.all(), widget = forms.RadioSelect( attrs={'checked': True}, choices=((self.prefix, 'featured_image')),))

        def add_prefix(self, field):
            if field == 'featured_image': return field
            else: return self.prefix and ('%s-%s' % (self.prefix, field)) or field

        class Meta:
            model = ProductImages
            fields = ['media', 'featured_image']

    ImagesFormset = modelformset_factory(ProductImages, fields=('media', 'featured_image'), extra=5)

模板

{{ formset.management_form }}
<div class="link-formset">
{% for choice in formset %}

<div>
  {{ choice.media }}
 <input type="radio" name="{{choice.featured_image.label}}">{{ choice.featured_image.label }}</
</div>
{% endfor %}
</div>
 类似资料:
  • 我有以下问题:我有沙箱中的代码,我想显示一个按钮,如果复选框被选中,最大数量大于1。最大数量条件不是问题,而是复选框的问题。我不知道如何获得特定复选框的“选中”值。我认为我不能对索引做任何事情,因为索引值在映射optionModules时被多次使用。预先感谢你的帮助。沙盒链接:https://codesandbox.io/s/nostalgic-germain-e18wh

  • 问题内容: 当我尝试使用复选按钮时,它可以正常工作,但文本不会出现。我不明白为什么。下面是我的代码 出现复选框,但旁边的文本没有 问题答案: 尝试使用主题的tk(ttk)检查按钮小部件:

  • 我一直在研究如何使用HTML5

  • 嗨,我在修复我的单选按钮时遇到问题,我是编码新手,我制作了一个简单的计算器,但我不知道如何解决这个问题。 公共空onClick(查看art0) { // 待办事项自动生成方法存根 我的问题与if语句有关,方程式不正确,因为它说不识别“*”如何格式化方程式以使其工作而不删除方程式,如果此代码中还有其他错误,我会欣赏,如果你能解决这个问题,谢谢你

  • 显示选单 按下按钮开启选单后,会显示目前开启之Web网页的标题、地址等信息。此外,尚可透过选单列进行各种操作或设定。每次按下按钮,都会在显示/隐藏选单间互换。 (1) 地址列 (2) 标题栏 (3) 浏览接口安全性图标 仅于利用网络过滤服务时显示。 (4) SSL图示 仅于开启SSL网页时显示。 (5) 选单列 进行操作或调整设定。 (6) 忙碌图示 仅于正加载网页时显示。 使用选单 档案 输入地

  • 我有定制的单选按钮,它们按照我的预期工作,只有一个例外。我希望这个值在单选按钮div的内部,现在它显示在我创建的单选按钮的外部,这实际上是一个类big radio。如何在我创建的单选按钮中显示值1和值2 下面是我的代码 css: HTML: 请在这里找到JSFIDLE: http://jsfiddle.net/4fu3q/ 谢谢