Reputation: 1
complain.html file:
<form method='POST' enctype="multipart/form-data">
{% csrf_token %}
Email: <input type="email" name="email" required/> <br /><br />
What is the complain: <input type="text" name="complain" required/><br /><br />
Who's against the complain (Enter Userame):
<input
type="text" name="against" required/><br/><br/>
Position of the person you are complaining against:
<input
type="text" name="position" required/><br/> <br/>
<div class="mb-3">
<label class="form-label">Evidence</label>
<input class="form-control-file" type="file" name="image" required />
</div>
</div>
<div class="mt-1" style="text-align: center">
<button class="btn btn-danger type="submit"> Submit </button>
<button class="btn btn-danger type="submit"> Update </button>
</form>
views.py :
def complain(request):
if request.method=='POST':
email = request.POST['email']
complain = request.POST['complain']
against = request.POST['against']
position = request.POST['position']
image = request.FILES.get('image')
user = User.objects.filter(username = against)
if user.first() is not None:
if request.user == user.first():
messages.error(request, 'You are complaining against Yourself :o ')
return redirect('complain')
pass
if User.objects.filter(username = against).exists():
complain = Complain(email = email, complain=complain, against = against, position = position, image=image)
complain.save()
messages.success(request, 'Complain Submit Successful')
return redirect('complain')
else:
messages.error(request, 'You are complaining against Non-User (-,-)')
return redirect('complain')
else:
return render(request,'complain.html')
Models.py :
class Complain(models.Model):
email = models.EmailField(max_length=100)
complain = models.CharField(max_length=200)
against = models.CharField(max_length=200)
position = models.CharField(max_length=200)
image = models.ImageField(upload_to = 'static', null=True, blank=True, default='2.png')
class Meta:
db_table = "Complain"
def __str__(self) :
return self.email
Upvotes: 0
Views: 2420
Reputation: 121
first send context variable of complain id to this template if you want to update a complain, so the complain will update against this id 2nd, update the template
@if(complain_id)
<input type="hidden" name="complain_id" value={{ complain_id }}>
<button name="update" class="btn btn-danger type="submit"> Update </button>
@else
<button class="btn btn-danger type="submit"> Submit </button>
@endif
in views.py
update your User.objects.filter(username = against).exists()
condition
if User.objects.filter(username=against).exists():
form_data = {'email': email, 'complain': complain, 'against': against, 'position': position, 'image': image}
if request.POST.get('update'):
complain = Complain.objects.filter(id=request.POST.get('complain_id'))
complain.update(**form_data)
messages.success(request, 'Complain Submit Successful')
elif request.POST.get('submit'):
complain = Complain(**form_data)
complain.save()
messages.success(request, 'Complain Updated Successful')
return redirect('complain')
Upvotes: 0