Пользователь может видеть только свои данные Django
Я строю систему управления контрактами, и я хочу, чтобы пользователь мог видеть только те компании, клиентов и пользователей, которые он зарегистрировал, теперь, когда я регистрирую нового пользователя, он также может видеть данные компаний, которые зарегистрировали другие пользователи.
Как сделать так, чтобы он видел только своих клиентов, компании и контракты?
views.py
# List the companies
@login_required
def client_company_list(request):
clients = ClientCompany.objects.all()
pending_payments_total = ClientCompany.objects.aggregate(sum=Sum('pending_payments'))['sum'] or 0
received_payments_total = ClientCompany.objects.aggregate(sum=Sum('received_payments'))['sum'] or 0
client_count = ClientCompany.objects.filter().count()
return render(request, 'list_client_company.html', {'clients': clients,
'pending_payments_total': pending_payments_total,
'received_payments_total': received_payments_total,
'client_count': client_count})
# Crate a new company
@login_required
def new_client_company(request):
# Start post add the company to the DB using POST or start a new form using None
form = ClientCompanyForm(request.POST, request.FILES, None)
# Check if the form is valid
if form.is_valid():
form.save()
return redirect('companies_list')
return render(request, 'client_company_form.html', {'form': form})
models.py
Вам нужно где-то хранить отношение между пользователем и его/ее компанией, чтобы вы могли фильтровать соответствующим образом в представлении.
Классический подход - создать для этого модель Profile, которая свяжет User и Company. Или если вы используете собственную модель User (похоже на то), то вы можете просто добавить FK к компании в модель User.