Как заставить пользователя в Django выбирать мастерскую, которую он добавил для записи на сервис для своего автомобиля?

я борюсь с той же проблемой уже 3 дня, я пытаюсь сделать мой законченный проект, который является своего рода онлайн сервисной книгой для автомобилей, которыми мы владеем, у меня есть модели vehicle, workshop, filter, servicerecord и я не могу добавить servicerecord к автомобилю, который я добавил, есть ли кто-нибудь, кто мог бы мне помочь? Вот немного кода, с которым у меня возникли проблемы, из forms.py и views.py:

class ServiceRecordCreateForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        all_workshops = Workshop.objects.exclude(name="Other Workshop")
        workshop_choices = [(workshop.id, workshop.name) for workshop in all_workshops]
        workshop_choices.insert(0, (0, 'Other Workshop'))  
        self.fields['workshop'].widget = forms.Select(choices=workshop_choices)
        self.fields['workshop'].choices = workshop_choices

        
        all_filters = Filter.objects.all()
        filter_choices = [(filter.id, filter.name) for filter in all_filters]
        self.fields['filters_changed'].widget = forms.CheckboxSelectMultiple()
        self.fields['filters_changed'].choices = filter_choices

    def clean_workshop(self):
        workshop_id = self.cleaned_data.get('workshop')
        if workshop_id == 0:  # Obsługa przypadku "Other Workshop"
            workshop = Workshop.objects.filter(name="Other Workshop").first()
            if not workshop:
                raise forms.ValidationError("Other Workshop is not available.")
        else:
            workshop = Workshop.objects.get(id=workshop_id)
        return workshop

    class Meta:
        model = ServiceRecord
        fields = ['workshop', 'date', 'mileage_at_service', 'filters_changed']
        widgets = {
            'date': forms.DateInput(attrs={'type': 'date'}),
        }


    class ServiceRecordCreateView(LoginRequiredMixin, CreateView):
    model = ServiceRecord
    form_class = ServiceRecordCreateForm
    template_name = 'create_service_record.html'

    def get_success_url(self):
        vehicle_id = self.kwargs['vehicle_id']
        return reverse_lazy('service_record_list', kwargs={'vehicle_id': vehicle_id})

    def form_valid(self, form):
        service_record = form.save(commit=False)
        service_record.vehicle_id = self.kwargs['vehicle_id']
        service_record.save()
        form.save_m2m()
        return redirect(self.get_success_url())

Я пытаюсь справиться с ним уже 3 дня, и все, что я получил, это ошибка:

TypeError at /create_service_record/2/
    Field 'id' expected a number but got <Workshop: Worksh1 (ALALALA)>.
    Request Method: POST
    Request URL:    http://127.0.0.1:8000/create_service_record/2/
    Django Version: 4.2.11
    Exception Type: TypeError
    Exception Value:    
    Field 'id' expected a number but got <Workshop: Worksh1 (ALALALA)>.
    Exception Location: /home/kamil/.local/lib/python3.10/site-        packages/django/db/models/fields/__init__.py, line 2055, in get_prep_value
    Raised during:  servicebook.views.ServiceRecordCreateView
    Python Executable:  /usr/bin/python3
    Python Version: 3.10.12
    Python Path:    
['/home/kamil/workspace/car_care_log',
 '/usr/lib/python310.zip',
 '/usr/lib/python3.10',
 '/usr/lib/python3.10/lib-dynload',
 '/home/kamil/.local/lib/python3.10/site-packages',
 '/usr/local/lib/python3.10/dist-packages',
 '/usr/lib/python3/dist-packages']
Вернуться на верх