我需要限制人员根据登录用户进行选择,因为从用户的视图中创建的人员是CreateView
,并且将用户置于所有模型上,因为ForignKey
我需要帮助知道如何限制选择范围,以便您只能看到并选择您的员工
forms.py
from unicodedata import name
from django import forms
from django.contrib.auth.models import User
from django.db.models import Count
from services.models import Service
from staff import views
from staff.models import Staff
from staff.views import staff_view
class AddServiceForm(forms.ModelForm):
service_name = forms.CharField(widget=forms.TextInput(
attrs={
'class': 'form-control'
}
))
description = forms.CharField(widget=forms.Textarea(
attrs={
'class': 'form-control',
}
))
price = forms.CharField(widget=forms.NumberInput(
attrs={
'class': 'form-control',
}
))
staff = forms.ModelChoiceField(queryset=Staff.objects.all(), empty_label='Choose Staff', widget=forms.Select(
attrs={
'class': 'custom-select'
}
))
class Meta:
model = Service
fields = [
'service_name',
'description',
'price',
'duration',
'staff',
]
views.py
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from django.views.generic import CreateView, FormView
import staff
from services.forms import AddServiceForm
from services.models import Service
from staff.models import Staff
def service(request):
services = Service.objects.filter(user=request.user)
return render(request, 'services.html', {'services': services})
class AddService(CreateView):
user = User
model = Service
form_class = AddServiceForm
template_name = 'add_service.html'
def form_valid(self, form, ):
form.instance.user = self.request.user
return super().form_valid(form)