【问题标题】:Providing checkboxSelectMultiple with values为 checkboxSelectMultiple 提供值
【发布时间】:2012-04-22 13:13:05
【问题描述】:

问题是我无法使用已通过视图中的实例选择和转发的选项值填充我的 checkboxSelectMultiple 小部件。

这些是相关的类:

查看:

if sid and request.method != "POST":
    try:
        obj = Service.objects.get(pk=int(sid), user=request.user.pk)
        form = addNewService(instance=obj)
    except:
        return HttpResponseRedirect("/")

表格:

class addNewService(forms.ModelForm):
    pk = forms.HiddenInput()
    authorities = forms.ModelMultipleChoiceField(queryset=authorities.objects.all(), widget=forms.CheckboxSelectMultiple, required=True)
    error_css_class = 'error'
    required_css_class = 'required'
    #organisation_logo = forms.ImageField()
    class Meta:
        model = Service
        #exclude = ("user",)
        fields = (  'service_name',
                    'category',
                    'service_duration',
                    'price',
                    'bursarie',
                    'vat_included',
                    'travelExpensesIncluded',
                    'authorities',
                    'type_of_delivery',
                    'description',
                    'active',
                    )

型号:

class Service(models.Model):
    user = models.ForeignKey(User)
    service_name = models.CharField(max_length=30)
    description = models.TextField()
    category = models.ForeignKey(Category)
    authorities = models.ManyToManyField(authorities)
    active = models.BooleanField()

    def removeServiceURL(self):
        return "/Services/Remove/%s"%self.pk

    def __unicode__(self):
        return "%s @ %s"%(self.service_name, self.user.username)

复选框会相应地显示,但是当我从实例打开表单时,所有内容都会正确填写,但复选框除外,这些复选框均未选中。

我做错了什么?

谢谢你的回答。

【问题讨论】:

  • 我猜你只需要更改字段的小部件?如果是这样,您可以使用widgets attribute 而无需重新定义该字段。

标签: python django


【解决方案1】:

试试:

def your_view(request, sid=None):
    if sid and request.method == "GET":
        try:
            obj = Service.objects.get(pk=sid, user=request.user)
            form = addNewService(instance=obj)
        except Service.DoesNotExist:
            return HttpResponseRedirect("/")

#rest of view

您不想吞下 try/except 中的所有异常。检查您正在处理的特定异常;它使调试更容易。此外,在您的查询集中,您试图在主键上匹配用户,但将其与对象进行比较:如果您想在 pk 上匹配,请执行:user__id=request.user.id 但是,如果用户是匿名的,这将失败。

【讨论】:

  • 考虑到一切,并在我的其余代码中实现了您的建议,但复选框仍未选中:(
猜你喜欢
  • 2011-05-10
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2018-10-18
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多