How to use two different Django Form at the same template?

前端 未结 2 1767
暗喜
暗喜 2021-02-06 10:39

My forms.py:

class AlertForm(forms.ModelForm):
class Meta:
    model=Alert
    fields = (\'high\',\'medium\', \'user\')
    widgets = {
        \'user\':  forms.         


        
相关标签:
2条回答
  • 2021-02-06 11:38

    The problem is that on your forms the fields have the same names.

    request.POST is a dictionary-like object. So it only contains the name/value pairs from the request. If the field names are the same on both of the forms then when you call

    alert_form = AlertForm(request.POST)
    notifier_form = NotifierForm(request.POST)
    

    they are initialized with the same values. To resolve this make the names to be unique between your two forms. For example prefix all the field names on the AlertForm with "alert_".

    0 讨论(0)
  • Use the prefix argument so that your field names don't clash.

    For example:

    alert form = AlertForm(request.POST, prefix='alert') 
    notifier_form = NotifierForm(request.POST, prefix='notifier')
    

    You need to use the same prefix in your unbound forms.

    extra_context = { 'alert_form': AlertForm(prefix='alert'),  notifier_form': NotifierForm(prefix='notifier') }
    

    The advantage of using prefix is that you don't need to manually rename the fields, as umnik700 suggests in their answer.

    0 讨论(0)
提交回复
热议问题