Django. Извлечение данных из связанной модели для использования в форме
Как я могу автоматически связать пользователя с билетом id_ и заполнить поле в форме?
Образец формы - https://i.stack.imgur.com/9YMUv.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)
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, verbose_name='User')
class TicketMessage(models.Model):
ticket_mes = models.TextField(verbose_name='Message')
ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
forms.py
class TicketMessageForm(ModelForm):
ticket_mes = forms.CharField(label='Answer', required=True)
class Meta:
model = TicketMessage
fields = ('ticket_mes', 'ticket')
views.py
class Ticket(DetailView, CreateView):
model = Ticket
form_class = TicketMessageForm
ticket_message = TicketMessage
template_name = 'support/ticket.html'
context_object_name = 'one_ticket'
allow_empty = False
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['ticket_message'] = TicketMessage.objects.filter()
return context
def form_valid(self, form):
obj = form.save(commit=False)
obj.user = self.request.user
return super(Ticket, self).form_valid(form)
success_url = reverse_lazy('ticket_list')
Предполагаю, что нужно как-то взять данные из шаблона и передать их в form_valid.
Попробовал добавить скрытое поле, в которое передается необходимая информация. Это работает, но выглядит неправильно и небезопасно.
<select class="d-none" name="ticket" required="" id="id_ticket">
<option value="{{ one_ticket.ticket_id }}" selected="">{{ one_ticket.ticket_id }}</option>
</select>