【问题标题】:i want to see all the users in django admin panel and i can select more than one user我想在 django 管理面板中查看所有用户,我可以选择多个用户
【发布时间】:2021-10-09 13:12:25
【问题描述】:

你好,我在模型中做了一些修改,得到了 User.username 并将它们插入到 user_list 和 multiselectfield(choices=user_list) 工作正常,但在我创建/创建新用户的情况下 我去应用程序选择多个用户,我的新用户没有显示在那里 直到我重新启动 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 应用程序中显示新创建的用户,这样我就无法一次又一次地重新启动服务器。 提前致谢!

【问题讨论】:

    标签: django django-models django-admin django-users


    【解决方案1】:

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

    您为您的模型创建一个 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多