Django: автоматическое сохранение полей внешних ключей

Я пытаюсь автоматически заполнить поле внешнего ключа при отправке формы. Я успешно установил поле пользователя, но у меня проблемы с form.instance.staff и form.instance.event , так как я получаю ошибку типа 'User' object has no attribute 'staffduty' . Я также хотел бы передать и сохранить некоторые переменные, такие как date_appointment и event name , но я не знаю, как это сделать. Спасибо за помощь

models.py

class Event(models.Model):
    name = models.CharField(max_length=255)
    staff_needed = models.PositiveIntegerField()    
    date = models.DateField()   

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('event_details', args=[str(self.id)])

class StaffDuty(models.Model):             
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    date_work = models.DateField()  
    shift = models.CharField(max_length=255)

    def __str__(self):
        return self.event.name | str(self.date_work) 

class UserAppointment(models.Model):            
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    staff = models.ForeignKey(StaffDuty, on_delete=models.CASCADE)
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    event_name = models.CharField(max_length=255)
    date_appointment = models.DateField(null=True)  

    def __str__(self):
        return self.event.name | str(self.staff.date_work)

    def get_absolute_url(self):
        return reverse('home')

views.py

class StaffDutyAddView(CreateView):
    model = StaffDuty
    form_class = StaffDutyForm
    template_name = 'reservation.html'
    success_url = reverse_lazy('home')

class UserAppointmentAddView(CreateView):
    model = UserAppointment
    form_class = UserAppointmentForm
    template_name = "reservation.html"

    def form_valid(self, form):
        form.instance.user = self.request.user.userinformation

        form.instance.staff = StaffDuty.objects.filter(user=self.request.user.staffduty).first()
        #form.instance.date_appointment = # add date_work from StaffDuty class
        form.instance.event = Event.objects.filter(user=self.request.user.event).first()
        #form.instance.event_name = # add name of the event from Event class
        return super(UserAppointmentAddView, self).form_valid(form)

    def get_context_data(self, **kwargs):
        kwargs['object_list'] = StaffDuty.objects.order_by('id')
        return super(UserAppointmentAddView, self).get_context_data(**kwargs)
Вернуться на верх