Текущий пользователь не отображается в форме из ModelForm, пока не установлены отношения в Django

У меня определены две модели, тестовая модель и модель пользователя. Модель Test связана с моделью User с помощью внешнего ключа. Модель Test имеет много различных аспектов, поэтому я сократил ее, но я создал форму этой модели с помощью ModelForm. Затем я вызываю форму, и действительно все записи отображаются, включая ячейку для User, однако она не показывает никаких опций или предварительного выбора для текущего пользователя. Что я делаю неправильно?

#Пользователь как отображается в форме в браузере:

<select name="researcher" id="id_researcher">
<option value="" selected>---------</option>

models.py

from django.db import models
from django.contrib.auth.models import (BaseUserManager, AbstractBaseUser)

class User(AbstractBaseUser):
    is_active = models.BooleanField(default=True)

    def get_full_name(self):
        """
        Return the first_name plus the last_name, with a space in between.
        """
        full_name = "%s %s" % (self.first_name, self.last_name)
        return full_name.strip()

    @property
    def is_staff(self):
        "Is the user a member of staff?"
        return self.staff

    @property
    def is_admin(self):
        "Is the user a admin member?"
        return self.admin

class Test(models.Model):
    researcher = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True, related_name="researcher")

views.py

from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse, HttpResponseRedirect
from django.urls import reverse
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from database.forms import TestForm
from database.models import User, Test

# Create your views here.
def index(request):
    return render(request, "database/index.html")

def test(request):
    #If request is post, throw in data, check if valid, if correct, save it
    if request.method == "POST":
        form=TestForm(request.POST)
        print(form)
        if form.is_valid():
            form.save()
    
    context={"form": form}
    return render(request, "database/test.html", context)

test.html:

{% extends "database/layout.html" %}

{% block body %}

<form action="" method="post">
    {% csrf_token %}
    {{form}}
    <input type="submit">
</form>

{% endblock %}

forms.py:

from django.forms import ModelForm
from database.models import Test

class TestForm(ModelForm):
    class Meta:
        model = Test
        fields='__all__'
Вернуться на верх