首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django形式中的过滤器下拉

django形式中的过滤器下拉
EN

Stack Overflow用户
提问于 2022-11-14 00:37:21
回答 3查看 47关注 0票数 2

在表单中,我试图根据登录用户组筛选属于登录用户的“市场下拉”字段。它列出了所有下拉字段项。我在下面试过了,但我认为过滤器的部分出了问题。

Marketplace.objects.filter(groups__user=self.user)类InfringementForm(ModelForm):def __init__(self,user,*args,**kwargs):super(InfringementForm,self).__init__(*args,**kwargs) Sel.field‘model’..queryset=InfringementForm=侵权类Meta: ordering = '-updated',‘创建’def __str__(self):返回self.name‘

字段=“名称”、“链接”、“侵权者”、“播放器”、“删除”、“状态”、“屏幕截图”、“市场”

models.py

类市场(models.Model):name = models.CharField(max_length=100) updated = models.DateTimeField(auto_now=True) created = models.DateTimeField(auto_now_add=True) Group= models.ForeignKey(Group,on_delete=models.CASCADE,default=1)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-14 03:24:19

最后的答案是在表单中添加self.user = user,在视图中添加user。

forms.py

Marketplace.objects.filter(groups__user=self.user)类InfringementForm(ModelForm):def __init__(self,user,*args,**kwargs):self.user =用户超级(InfringementForm,self).__init__(*args,**kwargs)“截图”,“市场”

views.py

@login_required(login_url='login') def createInfringement(请求):user=request.user表单= InfringementForm(user=request.user)如果request.method == 'POST':form =InfringementForm(用户、request.POST、request.FILES)如果form.is_valid():form.save()返回重定向(‘home’)上下文={' form ':form}返回呈现(request,‘base/合成_form.html’,上下文)

票数 0
EN

Stack Overflow用户

发布于 2022-11-14 01:09:11

__init__()方法中尝试如下:

代码语言:javascript
复制
def __init__(self, user, *args, **kwargs): 
    self.user = user     
    super(InfringementForm,self).__init__(*args, **kwargs)
    self.fields['marketplace'].queryset = Marketplace.objects.filter(groups__user=self.user)
票数 1
EN

Stack Overflow用户

发布于 2022-11-14 11:00:16

试试这个解决方案。

基本上,groupsMarketplace模型中的外键,它返回Group模型的完整对象。

您尝试使用完整对象进行筛选--在查询中是不可能的,因此可以使用用户实例的id进行筛选

代码会变成这样

代码语言:javascript
复制
class InfringementForm(ModelForm):

 def __init__(self, user, *args, **kwargs):
 super(InfringementForm,self).__init__(*args, **kwargs)
 self.fields['marketplace'].queryset = 
 Marketplace.objects.filter(groups__user__id=self.user.id)

  class Meta:
    model = Infringement
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74425896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档