Как получить id внешнего ключа в django modelform

Я хочу отобразить внешний ключ поля user в выпадающем списке выбора в форме и получить id выбранного имени пользователя. В настоящее время при сохранении формы в приведенном ниже коде в поле user_id сохраняется значение 'None'. Есть решение?

Все шло успешно, пока он не появился в выпадающем формате, а имя пользователя текущей учетной записи было установлено по умолчанию, и был добавлен атрибут disabled, чтобы его нельзя было редактировать.

[models.py]

class Leave(models.Model):
    title = models.CharField(max_length=50, blank=True, null=True)
    from_date = models.DateField(blank=True, null=True)
    end_date = models.DateField(blank=True, null=True)
    memo = models.TextField(blank=True, null=True)
    user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)
    is_deleted = models.BooleanField(default=False)
    create_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

[forms.py]

class LeaveForm(ModelForm):
  class Meta:
    model = Leave
    # datetime-local is a HTML5 input type, format to make date time show on fields
    widgets = {'user': Select(attrs={"disabled": 'disabled'})}
    fields = ['title', 'from_date', 'end_date', 'memo', 'user']

  def __init__(self, request, *args, **kwargs):
    super(LeaveForm, self).__init__(*args, **kwargs)
    # input_formats to parse HTML5 datetime-local input to datetime field
    self.fields['from_date'].input_formats = ('%Y-%m-%d',)
    self.fields['end_date'].input_formats = ('%Y-%m-%d',)
    self.fields['user'].empty_label = request.user.username

[views.py]

def leave(request, leave_id=None):
    instance = Leave()
    if leave_id:
        instance = get_object_or_404(Leave, pk=leave_id)
    else:
        instance = Leave()

    form = LeaveForm(request, request.POST or None, instance=instance)
    if request.POST and form.is_valid():
        form.save()
        return HttpResponseRedirect(reverse('leave:calendar'))
    return render(request, 'pages/leave/leave_add.html', {'form': form})
Вернуться на верх