Django. Как автоматически выбрать нужного пользователя в форме

Я недавно начал изучать Django. У меня есть модель, которая связана с пользователями. Нужно автоматически заполнять поле "Пользователь". Я хотел использовать request.user, но мои попытки не увенчались успехом. Подскажите, как правильно это сделать?

Образец из - https://i.stack.imgur.com/zcwLk.png

models.py

class Ticket(models.Model):

    ticket_id = models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')
    ticket_title = models.CharField(max_length=100)
    ticket_date_open = models.DateTimeField(auto_now_add=True)
    ticket_status = models.BooleanField(default=False)
    ticket_reason = models.TextField()
  
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, verbose_name='User')

forms.py

class TicketForm(ModelForm):
    class Meta:
        model = Ticket
        fields = ('ticket_title', 'ticket_status', 'ticket_reason', 'user',)

views.py

class CreateTicket(CreateView):
    form_class = TicketForm

    template_name = 'support/new_t[enter image description here][1]icket.html'
    success_url = reverse_lazy('test')

Форма - https://i.stack.imgur.com/zcwLk.png

Вы можете попробовать, переопределив метод form_valid

class CreateTicket(CreateView):
    form_class = TicketForm

    template_name = 'support/new_t[enter image description here[1]icket.html'
    success_url = reverse_lazy('test')

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.user= self.request.user
        return super(CreateTicket, self).form_valid(form)

Вы можете переопределить метод get_initial() из CreateView:

def get_initial(self):
    if self.request.user.is_authenticated():
        return {"user": self.request.user}
    return super().initial.copy()

Адаптация к вашим потребностям.

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