Django-限制根据用户选择

时间:2019-10-15 22:29:41

标签: django python-3.x

我需要限制人员根据登录用户进行选择,因为从用户的视图中创建的人员是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)

0 个答案:

没有答案
相关问题