Как получить 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})