Как получить id пользователя из модели связанного поля в django?

views.py

 @login_required
def become_vendor(request):
vendordetailform = VendorAdminDetailsForm()
if request.method == 'POST':
    vendordetailform = VendorAdminDetailsForm(request.POST, request.FILES)
    
    if vendordetailform.is_valid():    
        vendordetailform.instance.vendoruser = request.user      
        request.user=vendordetailform.save()
        request.user.is_active=False
        request.user.save()
        user_details = CustomUser.objects.filter(id=request.user)
        vendor_details = user_details[0].vendor_details.all()
        return render(request,'vendor/preview.html', {'user_details':user_details, 'vendor_details':vendor_details})
else:
    vendordetailform = VendorAdminDetailsForm()


return render(request, 'vendor/become_vendor.html', {'vendordetailform':vendordetailform})

У меня есть две модели 1. Модель пользователя, 2. Модель VendorDetails (vendoruser связан отношением foreignkey с vendordetails). Здесь я сохраняю дополнительные данные пользователя (VendorDetailsForm), если запрашиваемый пользователь подает заявку на поставщика. Я мог бы сохранить данные запрашиваемого пользователя в модели VendorDetails. Но когда я получаю id запрашиваемого пользователя, я не могу. Вместо этого я получаю поле foreignkey модели vendordetails. Здесь я хочу сделать неактивным запрашиваемого пользователя, который пришел с этой формой данных о поставщике. Я получаю Field 'id' expected a number but got <VendorDetails: yabeshofz@gmail.com-Customer1>.

Попробуйте вместо этого: user_details = CustomUser.objects.filter(id=request.user.id)

if vendordetailform.is_valid():    
    # Some code ...
    user_details = CustomUser.objects.filter(id=request.user.id)
    # Some code ...

Ваша проблема в том, что вы присваиваете request.user к vendordetailform.save(), что неправильно. Удалите эту строку и передайте request.user.id к CustomUser
. Попробуйте сделать что-то вроде этого.

@login_required
def become_vendor(request):
vendordetailform = VendorAdminDetailsForm()
if request.method == 'POST':
    vendordetailform = VendorAdminDetailsForm(request.POST, request.FILES)
    
    if vendordetailform.is_valid():    
        vendordetailform.instance.vendoruser = request.user      
        vendordetailform.save() 
        request.user.is_active=False
        request.user.save()
        user_details = CustomUser.objects.filter(id=request.user.id) 
        vendor_details = user_details[0].vendordetails_set.all()
        return render(request,'vendor/preview.html', {'user_details':user_details, 'vendor_details':vendor_details})
else:
    vendordetailform = VendorAdminDetailsForm()


return render(request, 'vendor/become_vendor.html', {'vendordetailform':vendordetailform})
Вернуться на верх