in my views.py I have
@login_required
def create(request, id=None):
if id is not None:
cat = get_object_or_404(Category, id=id)
form = CreateCategoryForm(request.POST or None, request.FILES or None, instance=cat, user=request.user)
else:
cat = None
form = CreateCategoryForm(request.POST or None, request.FILES or None, user=request.user)
if request.method == 'POST':
form.instance.added_by = request.user
# print(form.instance.added_by)
if form.is_valid():
if cat is None:
form.save()
else:
form.save()
return redirect('category-view')
else:
print(form.errors)
return render(request, 'admin/pages/category/create.html', {'form': form})
else:
form = CreateCategoryForm(instance=cat)
return render(request, 'admin/pages/category/create.html', {'form': form, 'cat': cat})
and in templates I have below form to submit data:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="mb-3 row">
<label for="html5-text-input" class="col-md-2 col-form-label">{{form.title.label}}</label>
<div class="col-md-10">
{{ form.title }}
{{ form.title.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-text-input" class="col-md-2 col-form-label">{{form.actionbar.label}}</label>
<div class="col-md-10">
{{ form.actionbar }}
{{ form.actionbar.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-text-input" class="col-md-2 col-form-label">{{form.cover.label}}</label>
<div class="col-md-10">
{{ form.cover }}
{{ form.cover.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="exampleFormControlSelect1" class="col-md-2 col-form-label">{{form.parent.label}}</label>
<div class="col-md-10">
{{ form.parent }}
{{ form.parent.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-search-input" class="col-md-2 col-form-label">{{form.cat_type.label}}</label>
<div class="col-md-10">
{{ form.cat_type }}
{{ form.cat_type.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-search-input" class="col-md-2 col-form-label">{{form.orientation.label}}</label>
<div class="col-md-10">
{{ form.orientation }}
{{ form.orientation.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-search-input" class="col-md-2 col-form-label">{{form.variant.label}}</label>
<div class="col-md-10">
{{ form.variant }}
{{ form.variant.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-search-input" class="col-md-2 col-form-label">{{form.tag.label}}</label>
<div class="col-md-10">
{{ form.tag }}
{{ form.tag.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="html5-search-input" class="col-md-2 col-form-label">{{form.apioption.label}}</label>
<div class="col-md-10">
{{ form.apioption }}
{{ form.apioption.errors }}
</div>
</div>
<div class="mb-3 row">
<label for="exampleFormControlSelect1" class="col-md-2 col-form-label">{{form.status.label}}</label>
<div class="col-md-10">
{{ form.status }}
{{ form.status.errors }}
</div>
</div>
{% comment %} <div class="mb-3 row">
<label for="exampleFormControlSelect1" class="col-md-2 col-form-label">{{form.added_by.label}}</label>
<div class="col-md-10">
{{ form.added_by }}
{{ form.added_by.errors }}
</div>
</div> {% endcomment %}
<button type="submit" class="btn btn-primary">
<span class="tf-icons bx bx-pie-chart-alt me-1"></span>Save
</button>
</form>
Here I uncomment one div
and my I added forms.py below code:
def __init__(self, *args, user=None, **kwargs):
super(CreateCategoryForm, self).__init__(*args, **kwargs)
self.fields['added_by'].initial = user.id if user else None
self.fields['parent'].queryset = Category.objects.filter(cat_type=Category.CatType.PARENT) | Category.objects.filter(id=0)
<ul class="errorlist"><li>added_by<ul class="errorlist"><li>This field is required.</li></ul></li></ul>