Пользователь может видеть только свои данные 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.

Вернуться на верх