RelatedObjectDoesNotExist: User has no vendor

1,374 views
Skip to first unread message

GWISU MANYANDA

unread,
Jun 9, 2021, 3:14:14 AM6/9/21
to django...@googlegroups.com
Hi Every one! I 'm looking for help.

I'm working with  a multi vendor website using django. But there is an issue that I have vendor object vendor but it says User has no vendor. Why is this happening and how may I solve this?

MY model

from django.contrib.auth.models import User
from django.db import models

class Vendor(models.Model):
    name = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    created_by = models.OneToOneField(User, related_name='vendor', on_delete=models.CASCADE)

class Meta:
    ordering = ['name']

def __str__(self):
    return self.name
My View

def become_vendor(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            vendor = Vendor.objects.create(name=user.username, created_by=user)
            return redirect('frontpage')

    else:
        form = UserCreationForm()
    return render(request, 'vendor/become_vendor.html', {'form': form})

@login_required
def vendor_admin(request):
    vendor = request.user.vendor
    return render(request, 'vendor/vendor_admin.html', {'vendor': vendor})

Error i'm getting

RelatedObjectDoesNotExist at /maduka/vendor_admin/

User has no vendor.
Request Method: GET
Request URL: http://127.0.0.1:8000/maduka/vendor_admin/
Django Version: 3.1.3
Exception Type: RelatedObjectDoesNotExist
Exception Value:
User has no vendor.










Lalit Suthar

unread,
Jun 9, 2021, 4:10:38 AM6/9/21
to django...@googlegroups.com
coming because of `vendor = request.user.vendor`
you have attached user to vendor so you can access user from vendor by doing
`user = vendor.created_by` but you can not access vendor from user

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAKjP07mdfQgHL_hTsXRuUzGTveJJG9VFbTOxQ7ma7DviSCnGaA%40mail.gmail.com.

GWISU MANYANDA

unread,
Jun 9, 2021, 6:14:04 AM6/9/21
to django...@googlegroups.com
thank you Lalit for you respond
I have changed this line
 vendor = request.user.vendor 
to 
user = vendor.created_by 
Now i'm getting this error

NameError at /maduka/vendor_admin/

name 'vendor' is not defined

Lalit Suthar

unread,
Jun 9, 2021, 7:06:18 AM6/9/21
to django...@googlegroups.com
vendor = Vendor.objects.get(created_by=request.user)
you have to pick vendor like this

Indu Chouhan

unread,
Jun 9, 2021, 10:20:56 PM6/9/21
to Django users
Hi ,

You can also try this.

vendor = User.objects.get(pk=request.user.id).vender

Thanks,
Indu Chouhan
Reply all
Reply to author
Forward
0 new messages