amr_aly

pass_value_in_init_method_in_forms

Oct 30th, 2021 (edited)
1,215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.36 KB | None | 0 0
  1. ###### in forms.py
  2. class YourForm(forms.ModelForm):
  3.  
  4.     class Meta:
  5.         model = YourModel
  6.         fields = [
  7.            'product ', 'vendor', '',  '', '', # your fields
  8.         ]
  9.  
  10.     #
  11.     def __init__(self, *args, ven_id, pro_id, **kwargs):
  12.         self.vendor = ven_id
  13.         self.product = pro_id
  14.         super(YourForm, self).__init__(*args, **kwargs)
  15.         self.fields['vendor'].queryset = Vendor.objects.filter(
  16.             id=self.vendor)
  17.         self.fields['product'].queryset = Product.objects.filter(
  18.             id=self.product)
  19.  
  20.  
  21. #### in views.py
  22.  
  23. def edit_inventory(request, inv_id, ven_id, pro_id):
  24.     qs = Inventory.objects.get_inventory_by_id(id=inv_id)  
  25.    
  26.     form = InventoryForm(request.POST or None, ven_id=ven_id, pro_id=pro_id, instance=qs)
  27.     if form.is_valid():
  28.         save_form = form.save()
  29.         save_form.updateduser = request.user
  30.         save_form.vendor_id = ven_id
  31.         save_form.product_id = pro_id
  32.         save_form.save()
  33.        
  34.         messages.success(
  35.             request, 'Save changes to inventory done successfully ... ')
  36.         return redirect(reverse('inventories:edit_inventory', args=(inv_id, ven_id, pro_id,)))
  37.  
  38.     context = {
  39.         'form': form,
  40.         'qs': qs,
  41.         'title': 'Edit Inventory',
  42.     }
  43.     return render(request, 'inventories/edit_inventory.html', context)
Add Comment
Please, Sign In to add comment