Reputation: 45
error i am receiving IntegrityError at /washer/ my code code inside my models.py
class washers(models.Model):
user=models.OneToOneField(User,on_delete=models.CASCADE)
mobile=models.IntegerField()
added_by=models.CharField(max_length=100,blank=True,null=True)
@receiver(post_save, sender=User)
def save_user_washers(sender, instance, **kwargs):
instance.washers.save()
@receiver(post_save, sender=User)
def create_user_washers(sender, instance, created, **kwargs):
if created:
washers.objects.create(user=instance)
code inside views.py
def wash(request):
wf=washerform()
uf=Userform()
if request.method=="POST":
uf=Userform(data=request.POST)
wf=washerform(data=request.POST)
if uf.is_valid() and wf.is_valid():
uf.save()
wf.save()
return HttpResponse("suscess fully crated ")
return render(request,'webpage/washer.html',{'fm':wf,'uf':uf})
Upvotes: 1
Views: 76
Reputation: 477607
It means you did not log in, so request.user
is not a User
object. You need to enforce that only people who are logged in can see and update the page. You can do this with a @login_required
decorator [Django-doc]:
from django.contrib.auth.decorators import login_required
@login_required
def wash(request):
if request.method == 'POST':
uf = Userform(request.POST, request.FILES, instance=request.user)
wf = washerform(request.POST, request.FILES, instance=request.user.washers)
if uf.is_valid() and wf.is_valid():
uf.save()
wf.save()
return HttpResponse("suscess fully crated ")
else:
wf = washerform()
uf=Userform()
return render(request,'webpage/washer.html', {'fm':wf,'uf':uf})
or if you want to register a washers
, you should remove the signal that creates a washer
and work with:
# remove the signal that creates a washers object.
def wash(request):
if request.method == 'POST':
uf = Userform(request.POST, request.FILES)
wf = washerform(request.POST, request.FILES)
if uf.is_valid() and wf.is_valid():
user = uf.save()
wf.instance.user = user
wf.save()
return HttpResponse("suscess fully crated ")
else:
wf = washerform()
uf=Userform()
return render(request,'webpage/washer.html', {'fm':wf,'uf':uf})
Note: In case of a successful POST request, you should make a
redirect
[Django-doc] to implement the Post/Redirect/Get pattern [wiki]. This avoids that you make the same POST request when the user refreshes the browser.
Upvotes: 1