我在个人资料应用中有自定义用户和个人资料应用我有以下型号:
class Profile(models.Model):
user = models.OneToOneField(MyUser,unique=True)
name = models.CharField(_('Name'),max_length=100)
work = models.CharField(_('Position'),max_length=200)
company = models.CharField(_('Company'),max_length=200)
gender = models.CharField(_('Gender'),max_length=10)
photo = models.ImageField(_('Profile Pic'),upload_to='images/',blank=True)
bio = models.TextField(_('Bio'),max_length=300)
def __str__(self):
return self.name
我的主要问题是,当我在表单中包含用户字段时,它会显示在应用程序中注册的所有用户的下拉列表。
我想只显示登录用户
答案 0 :(得分:0)
这是一个特定于您使用的表单的问题,而不是模型。您要做的是为字段user
指定查询集。
您可以在实例化初始表单后执行此操作。以下内容将在您的视图中显示,您可以在其中声明获取请求的表单:
# Obtain set of authenticated users (see [1] below)
authenticated_users = []
users = User.objects.all()
for user in users:
if user.is_authenticated():
authenticated_users.append(user)
# Instantiate form and update `user` queryset
form = SomeForm()
form.fields['user'].queryset = authenticated_users
[1] 我不相信可以根据用户是否经过身份验证来过滤用户对象管理器,不幸的是,您必须遍历查询集并检查每个用户。如果有人知道这样的问题,那么我很乐意改变我的答案。
这将限制经过身份验证的用户的下拉列表。
答案 1 :(得分:0)
我认为这种方法更好,节省时间:
user = MyUser.objects.filter(username__icontains=request.user)
form.fields['user'].queryset = user