Daniel Azubuine
Daniel Azubuine

Reputation: 25

'User' object has no attribute 'staffUser'

I customized the User Model Using Django One To One Field

My models.py

class StaffUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.ForeignKey(Dept, on_delete=models.RESTRICT)

    def __str__(self):
        return self.user.username

When uploading a form, i want to get the department of the user

'My Views.py'

   def FileUploadForm(request, pk):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save(commit=False)
            u = User.objects.get(username=request.user)
            form.instance.username = u
            folder = Folder.objects.get(id=pk)
            department = u.staffUser.department
            form.save()
            messages.success(request, f'File Successfully uploaded to {folder} in {department}!')
            return redirect('home')
    else:
        form = UploadFileForm()

    context = {'pk':pk, 'form':form}
    return render(request, "pages/fileup_form.html", context)

But it gives error AttributeError at /file/new/1 'User' object has no attribute 'staffUser'

Please guys i need help

Upvotes: 0

Views: 524

Answers (2)

BrendanPJ
BrendanPJ

Reputation: 161

You need to specify the reverse in lower case, so staffuser instead of staffUser.

Alternatively you can specify the related name to be used for calling the reverse accessor, as per below in place of some_name.

user = models.OneToOneField(User, on_delete=models.CASCADE, related_name=some_name)

Upvotes: 1

PTomasz
PTomasz

Reputation: 1708

Add related_name on your user field in StaffUser model

class StaffUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name=staff_user)
    department = models.ForeignKey(Dept, on_delete=models.RESTRICT)

    def __str__(self):
        return self.user.username

Now you will be able to access StaffUser by staff_user on User object

Upvotes: 1

Related Questions