【问题标题】:|as_crispy_field got passed an invalid or inexistent field django?|as_crispy_field 传递了一个无效或不存在的字段 django?
【发布时间】:2021-12-31 08:11:38
【问题描述】:

views.py

 def VendorEdit(request, id=0):
if request.method == "GET":
    vendor = CustomUser.objects.get(pk=id)
    print(vendor)
    form = VendorCreationForm(instance=vendor)
    vendordetails = VendorDetails.objects.filter(vendoruser_id=vendor.id)
    print(vendordetails)
    vendordetailform = VendorAdminDetailsForm(instance=vendordetails[0])
    return render(request, 'vendor/edit.html', {'form':form, 'vendor':vendor, 'vendordetailform':vendordetailform})
else:
    vendor = CustomUser.objects.get(pk=id)
    form = VendorCreationForm(request.POST, instance=vendor)
    vendordetails = VendorDetails.objects.filter(vendoruser_id=vendor.id)
    vendordetailform = VendorAdminDetailsForm(request.POST, request.FILES, instance=vendordetails[0])
    
    if form.is_valid() and vendordetailform.is_valid():
        vendor=form.save()
        # vendordetailform.instance.vendoruser = vendor
        vendordetailform.save()
        # vendor.is_active = False
        # vendor.save()
    return redirect('login')

edit.html

     <form method="POST" action="{% url 'vendor_edit' vendor.id %}"  enctype='multipart/form-data'>

    {% csrf_token %}


        {{ vendorform.email|as_crispy_field}}
        {{ vendorform.first_name|as_crispy_field}}
        {{ vendorform.last_name|as_crispy_field}}
        {{ vendorform.mobile_number|as_crispy_field}}
        {{ vendorform.password1|as_crispy_field}}
        {{ vendorform.password2|as_crispy_field}}

        {{ vendordetailform.type_of_vendor|as_crispy_field}}
        {{ vendordetailform.aadhar_number|as_crispy_field}}
        {{ vendordetailform.aadhar_image|as_crispy_field}}
        {{ vendordetailform.pan_number|as_crispy_field}}
        {{ vendordetailform.pan_image|as_crispy_field}}
        {{ vendordetailform.store_name|as_crispy_field}}
        {{ vendordetailform.brand_name|as_crispy_field}}
        {{ vendordetailform.mail_id|as_crispy_field}}
        {{ vendordetailform.contact_no|as_crispy_field}}
        {{ vendordetailform.gst_number|as_crispy_field}}
        {{ vendordetailform.attach_gst_cert|as_crispy_field}}
        {{ vendordetailform.acct_number|as_crispy_field}}
        {{ vendordetailform.attach_passbook|as_crispy_field}}
        {{ vendordetailform.ifsc_code|as_crispy_field}}            
        {{ vendordetailform.insta_account|as_crispy_field}}
        {{ vendordetailform.website|as_crispy_field}}
        {{ vendordetailform.street_name|as_crispy_field}}
        {{ vendordetailform.city|as_crispy_field}}
        {{ vendordetailform.pincode|as_crispy_field}}



    <button type="submit" class="btn btn-dark" value="Submit">Preview</button>&ensp;
    <a href="{% url 'login' %}">Already a Vendor?</a>
</form><br>

forms.py

 class VendorCreationForm(UserCreationForm):

 class Meta:
    model = CustomUser
    fields = ['email','first_name','last_name','mobile_number']


def save(self, commit=True):
    user = super().save(commit=False)
    user.vendor = True
    # user.is_approved = False
    if commit:
        user.save()
    return user




 CATEGORY = [
     ('loom','LOOM'),
     ('boutique', 'BOUTIQUE'),
     ('wedding','WEDDING'),
 ]

 class VendorAdminDetailsForm(forms.ModelForm):
     type_of_vendor = forms.CharField(max_length=200,label='What type of 
 Vendor?', widget=forms.Select(choices=CATEGORY))

class Meta:
    model = VendorDetails
    fields = ['type_of_vendor','aadhar_number','aadhar_image', 'pan_number','pan_image', 'store_name', 'brand_name', 'mail_id', 'contact_no',
               'gst_number','attach_gst_cert', 'acct_number','attach_passbook', 'ifsc_code', 'fb_account', 'insta_account', 'website',
                'door_no', 'street_name', 'city', 'pincode' ]
    labels = {
                'aadhar_image': 'Attach Aadharcard',
                'pan_image' : 'Attach Pancard',
                'gst_number': 'GST Number',
                'attach_gst_cert': 'Attach GST Certificate',
                'acct_number': 'Bank Account number',
                'attach_passbook': 'Attach Bank Passbook or Cheque Leaf'
    }

preview.html

 <div class="container m-5">
   <dl class="row">
<h1>Admin Details</h1>
<dt class="col-sm-3">First Name</dt>
  {% if user_details %}  
    {% for data in user_details %}
<dd class="col-sm-9">{{data.first_name}}</dd>
    {% endfor %}
  {% endif %}

<dt class="col-sm-3">Last Name</dt>
  {% if user_details %}  
    {% for data in user_details %}
<dd class="col-sm-9">{{data.last_name}}</dd>
    {% endfor %}
  {% endif %}

<dt class="col-sm-3">Aadhar Number</dt>
  {% if vendor_details %}  
    {% for data in vendor_details %}
<dd class="col-sm-9">{{data.aadhar_number}}</dd>
    {% endfor %}
  {% endif %}

      {% for data in user_details %}
   <button type="submit" class="btn btn- 
 success">Save</button>&ensp;&ensp;&ensp;
   <a href="{% url 'vendor_edit' data.id %}" class="btn btn- 
info">Edit</a>
 {% endfor %}
     </div>

用户注册后,我允许他们在编辑详细信息和预览后预览和编辑详细信息,然后单击提交。它将重定向到登录。编辑选项不起作用,预览提交后不会重定向到登录用户。一旦这些都完成(在'登录'之前,我想在管理面板中给非活动用户(is_active = False),然后给(is_active = True)。请需要帮助。

【问题讨论】:

  • 请分享表格(vendordetailform 和 vendorform)。
  • forms.py 添加到问题中。

标签: python django django-views django-templates


【解决方案1】:

您正在尝试将 vendorform.password1 和 vendorform.password2 呈现为清晰字段。

但是,这些字段在您的 vendorform 中不存在。

如果您的 CustomeUser 模型中有密码 1 和密码 2,只需将字段添加到 VendorCreationForm。

 class VendorCreationForm(UserCreationForm):

 class Meta:
    model = CustomUser
    fields = ['email','first_name','last_name','mobile_number','password1','password2']

此外,您在模板中使用了错误的表单名称。您将表单作为“表单”传递到上下文中,但在模板中使用“供应商表单”。

应该是

{{form.email|as_cripsy_field}}
#etc

【讨论】:

  • 我添加了。但仍然出现同样的错误。追溯突出显示此视图行。 `return render(request, 'vendor/edit.html', {'form':form, 'vendor':vendor, 'vendordetailform':vendordetailform})`
  • @sam,还有另一个问题 - 刚刚更新了我的答案。
  • 是的。工作。一旦我编辑并再次单击预览,它就会重定向到login。只有在preview.html 中单击保存按钮后才会发生登录重定向。你能帮忙吗?
  • 我已添加我的preview.html
  • 保存选项有效。那不是形式。我没有在里面附上网址。现在我有一个问题,预览选项不允许我预览 1+ 更多编辑。你能帮帮我吗
猜你喜欢
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 2021-08-31
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多