如何使用django forms.ModelChoiceField填充字段

时间:2014-11-23 04:43:24

标签: python django django-models django-forms

当我从django表单中选择一个opcion参考字段时,如何获取产品名称。

 class InvoiceForm(forms.Form):
    invoice= forms.CharField(widget = forms.TextInput())
    Ref= forms.ModelChoiceField(queryset=Producto.objects.all())
    Product = forms.CharField(widget = forms.TextInput())

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望根据Ref字段自动填写产品名称。但是,在这种情况下,您根本不需要单独的字段。在模板中,ModelChoiceField将使用Producto__str__方法显示选项。所以也许这样的东西可以满足你的需求。

#models.py
class Producto(models.Model): 
    name = models.CharField()
    ...
    def __str__(self):
        return self.name

#forms.py
class InvoiceForm(forms.Form):
    invoice= forms.CharField(widget = forms.TextInput())
    product= forms.ModelChoiceField(queryset=Producto.objects.all())

#views.py
class MyFormView(views.FormView):
    def form_valid(self, form):
        product = form.cleaned_data['product']
        # can access any product attributes
        if product.name == 'bananas':
            # do_something(form)

将字段名称保持为小写(product而不是Product),这是最佳做法。