我想在 Django 管理面板中查看所有用户,我可以 select 多个用户

i want to see all the users in django admin panel and i can select more than one user

你好,我对模型做了一些修改,得到了 User.username 并将它们插入到 user_list 和 multiselectfield(choices=user_list) 工作正常,但在我 made/create 新用户的情况下 然后我转到 select 多个用户的应用程序,我新创建的用户没有显示在那里 直到我重新启动 Django 服务器

我的模型是这样的:

class Video(models.Model):
listo = []
user = User.objects.all()
for i in user:
    a = (str(i), str(i))
    listo.append(a)
print("this is listo", listo)

caption = models.CharField(max_length=100)
video = models.FileField(upload_to="video/%y",null=True,blank=True)
show_to = MultiSelectField(choices=User.username)
# show_to = models.ForeignKey(User, on_delete=models.CASCADE)
url_video= models.URLField(blank=True)
def __str__(self):
    return self.caption

我想要的是立即在 Django 应用程序中显示新创建的用户,这样我就无法一次又一次地重新启动服务器。 提前致谢!

您定义的模型选择在您的服务器启动或重新启动时设置一次,因此您的选择在添加用户后不会更新。

您为模型创建了一个 ModelForm,并在 init 表单方法中为模型字段设置选项。打开表单时,每次调用表单的构造函数并设置选项。

from django import forms

class VideoForm(forms.ModelForm):
    ...
    ...

    def __init__(self, *args, **kwargs):
        super(VideoForm, self).__init__(*args, **kwargs)
        self.fields['show_to'].choices = self.get_dynamic_choices()

    def get_dynamic_choices(self):
        choices = [(obj.id, obj.username) for obj in User.objects.all()]
        return choices