Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用模型对象作为django-filter MultipleChoiceFilter的选择

我正在使用Django-filter,我希望其中一个字段(supervisor)是一个ChoiceFilter,其中的选项是模型中的对象。最有效的方法是什么?我尝试遵循this post,但无论我做了什么更改(当前是cannot unpack non-iterable int object)都一直收到错误。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# models.py
class people(models.Model):
    namelast = models.CharField(max_length=100, verbose_name='Last Name')
    namefirst = models.CharField(max_length=100, verbose_name='First Name')
    supervisor = models.ForeignKey('self', blank=True, null=True, on_delete=models.SET_NULL, verbose_name='Supervisor')
    
    def __str__(self):
        return "%s %s" % (self.namefirst, self.namelast)

# filters.py
class office_filter(django_filters.FilterSet):
    supervisor = django_filters.ChoiceFilter(choices=[], lookup_expr='icontains', label='Supervisor')
    # other fields

    class Meta:
        model = people
        fields = ['namelast', 'namefirst', 'supervisor']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        try:
            self.filters['supervisor'].extra['choices'] = [x for x in
                people.objects.all().values_list('supervisor', flat=True).distinct()]
        except (KeyError, AttributeError):
            pass

我们的目标是让supervisor字段成为一个很好的菜单,其中包含在people模型中作为主管添加的所有人员。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-02 20:10:07

Ananya's answer帮助我正确地了解了语句返回的内容,但在考虑了错误和选择列表通常是如何构造的之后,我意识到我需要它来返回一个元组(而不仅仅是一个值)。以下是最终运行的相关代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class office_filter(django_filters.FilterSet):
    supervisor = django_filters.ChoiceFilter(choices=[], label='Supervisor')
    #...
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            try:
                self.filters['supervisor'].extra['choices'] = [(people.objects.get(pk=x).id, people.objects.get(pk=x)) for x in people.objects.all().values_list('supervisor', flat=True).distinct() if x is not None]
            except (KeyError, AttributeError):
                pass

重要的部分是:(people.objects.get(pk=x).id, people.objects.get(pk=x)),而不仅仅是people.objects.get(pk=x)

还必须删除filter字段中的lookup_expr

票数 1
EN

Stack Overflow用户

发布于 2020-07-02 18:24:50

我不是百分之百确定,但你能试一下吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[people.objects.get(pk=x[0]) for x in people.objects.all().values_list('supervisor', flat=True).distinct()]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[people.objects.get(id=x[0]) for x in people.objects.all().values_list('supervisor', flat=True).distinct()]

在你提到的链接中,我相信DatedResource.objects.all().values_list('date', flat=True).distinct())会返回一个字符串数组

在您的代码中,people.objects.all().values_list('supervisor', flat=True).distinct()将返回一个包含int的字符串-记录的it,因为它是一个外键

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

https://stackoverflow.com/questions/62702314

复制
相关文章
C++对象模型_Class Obj作为函数参数
开发环境 VC6.0 编辑器 Cmd Markdown 关于C/C++中基本类型(如:int,int*等)作为函数参数时,是通过将该变量的值压栈来进行参数传递;本文通过C++反汇编代码分析了当对象作为函数参数时(该形参非引用或指针),参数如何传递以及此时栈帧的结构。 对象作为函数参数时,参数传递过程(如:函数的声明为:void show(class Object obj);该函数的调用的为show(arg);其中实参arg的类型为class Object):1,在栈顶上为obj对象分配内存空间,然
chinchao.xyz
2022/04/25
1.2K0
C++对象模型_Class Obj作为函数参数
选择Kong作为你的API网关
在微服务架构之下,服务被拆的非常零散,降低了耦合度的同时也给服务的统一管理增加了难度。如上图左所示,在旧的服务治理体系之下,鉴权,限流,日志,监控等通用功能需要在每个服务中单独实现,这使得系统维护者没有一个全局的视图来统一管理这些功能。API 网关致力于解决的问题便是为微服务纳管这些通用的功能,在此基础上提高系统的可扩展性。如右图所示,微服务搭配上 API 网关,可以使得服务本身更专注于自己的领域,很好地对服务调用者和服务提供者做了隔离。
kirito-moe
2018/07/25
3.5K0
选择Kong作为你的API网关
双塔模型如何选择负样本?
之前有一段时间做过双塔的召回模型[1],线上各个指标有了不错的提升。目前双塔模型也是被各大公司钟爱的召回模型。对主流召回模型的分享整理在:总结下自己做过的深度召回模型
NewBeeNLP
2022/11/11
1.1K0
双塔模型如何选择负样本?
Django DjangoFilterBackend django-filter
注意 : 在url的参数中,原来我们在filters.py中定义的变量是 “RegDate”,到了url中变成了 “RegDate_after” 和 “RegDate_before”,这是框架给我设定好的区间变量,直接使用就行
Autooooooo
2020/11/09
1.6K0
Django DjangoFilterBackend django-filter
[IJCAI | 论文简读] 作为知识嵌入的语言模型
知识嵌入 (KE) 通过将实体和关系嵌入到连续向量空间中来表示知识图 (KG)。现有的方法主要是基于结构或基于描述的。基于结构的方法学习保留 KG 固有结构的表示。它们不能很好地代表结构信息有限的现实世界 KG 中丰富的长尾实体。基于描述的方法利用文本信息和语言模型。在这个方向上的先前方法几乎没有优于基于结构的方法,并且受到诸如昂贵的负采样和限制性描述需求等问题的困扰。在本文中,作者提出了LMKE,它采用语言模型来导出知识嵌入,旨在丰富长尾实体的表示并解决先前基于描述的方法的问题。作者使用对比学习框架制定基于描述的 KE 学习,以提高培训和评估的效率。实验结果表明,LMKE 在链接预测和三重分类的 KE 基准上实现了最先进的性能,尤其是对于长尾实体。
智能生信
2022/12/29
3100
[IJCAI | 论文简读] 作为知识嵌入的语言模型
炮灰模型:女生如何选择追求者的数学模型?
今年的520撞上了周六,终于有时间可以从早嗨到晚了!不知道有多少小伙伴正在外,和亲爱的Ta一起享受温馨时光呢?没有伴儿的小伙伴们也不要灰心,今天的推送,看似烧脑,其实正是想为那些「想爱」的小伙伴们加油打气。幸福就在不远方,Fighting!朋友~ 引言: 上周我的一个朋友第N 次向女生表白遭到拒绝,作为好朋友的我除了同情之外觉得应该做点什么。之前一次聊天受到 菠菜 的启发,加上出于对数学的兴趣,我对女生“选择与拒绝”的策略试着做了一个简单的建模,并得出比较有意义的结论。 摘要 每一个女生都渴望找到自己心中
大数据文摘
2018/05/24
1.2K0
[最佳实践] -- 建表如何选择Doris表模型
Doris的表模型和MySQL的存储引擎: innodb,myisam,memeory等功能类似, 不同的表模型擅长处理不同的数据方式. 如何能高效的查询, 直接取决于选择的表模型. 表一旦创建, 表模型不能更改.
小伟
2022/07/24
4.5K0
使用Unix Sockets的Redis作为对象缓存来加速wordpress站点
当 Redis 走 Unix Sockets 是在 OSI 模型中而没有哦组 TCP/IP,可以实现约 25% 的性能提升。
青阳
2021/09/10
1.4K0
如何使用PaaS作为安全控制的试验平台
美国商务部国家标准与技术研究所(NIST)在2014年12月发布了特别出版物800-53A修订版4,概述了高级信息系统安全官(ISSO)和信息系统所有者(ISO)需要做哪些工作,以便遵守美国联邦法、行政命令以及安全控制方面的政策、法规及标准。该修订版为安全控制体系设立了标准。 该体系按安全控制方面的下列18个大类来划分: 访问控制 认识和培训 审计和问责制 安全意识和授权 配置管理 应急规划 识别和验证 事件响应 维护 介质保护 物理和环境保护 规划 人员安全 风险评估 系统和服务购置 系统和通讯保护 系统
静一
2018/03/21
1.5K0
炮灰模型:女生如何选择追求者的数学模型?
上周我的一个朋友第N 次向女生表白遭到拒绝,作为好朋友的我除了同情之外觉得应该做点什么。之前一次聊天受到 菠菜 的启发,加上出于对数学的兴趣,我对女生“选择与拒绝”的策略试着做了一个简单的建模,并得出比较有意义的结论。
IT阅读排行榜
2018/08/16
5120
Android使用bindService作为中间人对象开启服务
<pre spellcheck="false" class="md-fences md-end-block contain-cm modeLoaded" lang="java" contenteditable="false" cid="n14" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, "Liberation Mono", Courier, monospace; font-size: 0.9em; white-space: normal; display: block; break-inside: avoid; text-align: left; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(223, 226, 229); border-radius: 3px; padding: 8px 1em 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">package com.demo.secondservice; ​ import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.widget.Toast; ​ public class MyService extends Service { public MyService() { } ​ @Override public IBinder onBind(Intent intent) { ​ ​ ​ ​ return new MyBind(); } ​ ​ public void banZheng(int money) { ​ if(money>1000){ Toast.makeText(getApplicationContext(), "帮你办", Toast.LENGTH_LONG).show(); ​ ​ }else { ​ Toast.makeText(getApplicationContext(), "钱少,不办", Toast.LENGTH_LONG).show(); ​ } } ​ //定义中间人 public class MyBind extends Binder{ ​ public void callBanZheng(int money){ ​ //调用办证的方法 banZheng(money); ​ } ​ ​ } } ​</pre>
Dream城堡
2019/01/28
6200
运算符重载使用它类对象作为参数
我们想实现一个功能,分别有两个类,一个名为 Sender,负责发送邮件。另外一个类名为 Mail,负责管理发送的标题和内容。在使用的时候,我们需要让类 Sender 重载 << 操作符,以实现将 Mail 类的数据发送出去,大致用法就是 Sender << Mail 这样的方式。这就涉及到了诸多问题。
我与梦想有个约会
2023/10/20
1420
如何选择合适的 django 版本使用
然后,该如何选择一个合适的版本,是一股脑装最新版(很肯能存在一些小问题,如:与其他库的兼容性问题)还是有方法可寻呢,请看:
卓越笔记
2023/02/18
3K0
如何选择合适的 django 版本使用
Golang 微服务为什么选择使用 gRPC 作为通信协议?
我们在之前的文章中,连续使用四篇文章的篇幅介绍过 gRPC 的相关知识,如果有读者朋友还未阅读,可以按需翻阅一下前面的四篇关于 gRPC 的文章。
frank.
2021/12/07
1.5K0
ContOS如何使用本地cdrom作为yum源
yum --disablerepo=* --enablerepo=cdrom list
菲宇
2019/06/12
1.8K0
如何使用C语言的面向对象
我们都知道,C++才是面向对象的语言,但是C语言是否能使用面向对象的功能? (1)继承性 1 typedef struct _parent 2 { 3 int data_parent; 4 }Parent; 5 typedef struct _Child 6 { 7 struct _parent parent; 8 int data_child; 9 }Child;  在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问
233333
2018/03/07
2.3K0
NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】
b.如果X是2段文本(X1,X2),则是可以抽象为句对分类问题。如下所示 i:如NLI等任务。
汀丶人工智能
2022/12/21
6470
C++|对象模型|对象模型综述
作为C++的核心单元,对象模型在编译器眼中是如何实现的?本文从几个基本理论模型出发,剖析实际。
朝闻君
2021/11/22
6810
C++|对象模型|对象模型综述
点击加载更多

相似问题

使用MultipleChoiceFilter时动态重新加载选择

17

Django: TextChoices模型上的MultipleChoiceFilter

151

django-filter:如何从相关模型中获取选择?

229

"Django-filter“可以在FilterClass(FilterSet)方法中使用ViewSet MultipleChoiceFilter吗?Django 1.11,Python 2.7

15

如何使用django-filter显示模型中的字段?

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文