django-queryset 相关问题

Django查询集是从Django的ORM系统中检索对象的主要抽象

在 Django 中,如何生成包含反向多对多关系结果的查询集?

我有以下模型布局 类组(模型.模型): group_name = models.CharField(max_length=100, default="新组") group_created_date = models.DateField(默认=日期....

回答 1 投票 0

如何获取 Django 查询集中特定值的平均值

我有两个模型“团队”和“成员”。 Members 中的字段之一是“favorite_team”,Teams 中的字段之一是“favorite_avg” 我试图通过输入 ...

回答 1 投票 0

比较 django TestCase 中的查询集

我有一个非常简单的视图如下 def simple_view(请求): 文档 = request.user.document_set.all() return render(request, 'simple.html', {'documents': 文档}) 为了测试上述...

回答 8 投票 0

django __in 具有非常大列表的查询集太慢

我在视图中有这个过滤器: cat_ids = list(models.Catalogue.objects.only('城市', '地区').filter( Q(*[Q(city__contains=x) for x in city_district], _connector=Q.OR) | Q(*[Q(city__contains=x) for x in city_district], _connector=Q.OR) | Q(*[Q(district__con...

回答 1 投票 0

自定义管理器 django ... return super().get_queryset().filter(author=user)

我怎样才能做这样的事情 模型.py 类 FilterManager(models.Manager): def get_queryset(self) -> 查询集: 用户 = self.request.user 返回 super().get_queryset().f...

回答 1 投票 0

将 django 模型字段从嵌套模型移动到“主”模型

我有 2 个 django 模型,链接如下: 类 ModelA(models.Model): id = models.UUIDField(primary_key=True) # 这里还有一些其他字段 类 ModelB(models.Model): modela_id = models.UUI...

回答 1 投票 0

如何同时过滤 Django 模型的 AND 和 OR

假设我有一个用户模型和一个数据集模型。我想获取所有数据集(具有某种类型并且(属于某个用户或不属于任何人))。实现目标的最佳方法是什么

回答 1 投票 0

Django ORM 多个表的一对多关系问题

型号: 类标记(模型.模型): name = models.CharField(max_length=200, verbose_name="Марка", unique=True, null=True) #... 模型类(模型.模型): 标记 = models.ForeignKey(Ma...

回答 1 投票 0

外键按字段排序时性能缓慢

当查询集按相关模型中的字段排序时,性能会急剧下降。我用的是mysql。 例如,我有两个模型: 类事件(模型.模型): idEvent = models.BigAutoField(

回答 1 投票 0

如何进行多对多 Django 查询来查找具有 2 个给定作者的书籍?

我有一个查询,需要使用 ID 精确过滤 2 位作者 理论上, Book.objects.filter(author__id = 1,author__id = 2)。 这是不可能的。 我怎么解决这个问题? 切...

回答 5 投票 0

Django 智能适配传输

我有一本模型书,该表中有重复的行。 在重复操作期间更改了其中一个重复项。 这些行之间的差异在于两个字段(special_id 和 st...

回答 1 投票 0

如何从Django中不相关的模型获取查询集

我正在开发一个有关汽车备件的网站。主要模型是Part,它有不同的父模型,例如Category和Brand。 我想从我的数据库自动生成菜单。如果我...

回答 1 投票 0

Django - 动态过滤多个查询集

我想按费用类型对费用进行每月明细。 我想通过过滤器表单动态输入开始日期和结束日期,这样我就不必重复代码...

回答 1 投票 0

如何获取所有行的查询集,其中每一行都有特定的字段?

我有一个模型Employees,我想要一个包含所有行的查询集,但每行都有一些特定字段,而不是所有字段。 我知道如何查询表/模型中的所有行: 员工。

回答 9 投票 0

是否可以注释包含查询集的列?

我想在 HTML 模板上显示一个表格,其中包含来自 GroupCaseFile 模型的数据。但其中一列必须包含来自最新 ProceduralAct 对象的数据,特别是:'act_number'、'act_ty...

回答 1 投票 0

Django (DRF) ORM - 具有反向关系的简单左连接

我正在尝试使用 Django 3.2.9 和 DRF 3.12.4 从我的 postgreSQL 数据库中选择数据。 这是我的模型: 头饰类(ValidatedModelbase): 类类型(models.TextChoices): 战后...

回答 1 投票 0

django 每次都会使用相同的上下文渲染多个模板

我正在努力使用 htmx 进行延迟加载,在多个选项卡中显示多个表。代码工作正常,但我无法解决两件事。 查询集命中数据库 4 次。 我正在尝试...

回答 1 投票 0

Django:如何通过相关对象字段的组合来过滤查询集?

我有三个相关模型,如下所示: 类库(模型.模型): 名称 = models.CharField(max_length=200, 空白=False) 类元: verbose_name = '库'

回答 1 投票 0

在 DateField 上使用 Q 过滤器 _lte 进行 Django 查询(USE_TZ=True)不起作用(MySql DB)

我得到了一个发票模型,其字段created_at为models.DateTimeField(),其中包含一些包含多个日期的记录: 使用 HTML 表单,我想按日期过滤 我得到了一个 Invoice 模型,其字段 created_at 为 models.DateTimeField(),其中包含一些包含多个日期的记录: 使用 HTML 表单,我想按日期过滤 <input name="start" class="form-control me-3" type="date" value="{{ min_date|date:'Y-n-d' }}" /> 我的结束日期有相同的字段,当我在视图中打印它们时,它们似乎采用正确的格式2023-11-12 -> 2023-11-17。 在我看来,我检查这两个字段是否包含值,如果是,我过滤我的 Invoice 查询集: 我尝试了很多组合进行查询集过滤,每次,__lte子句似乎都无法正常工作,并且结果不包括我的end日期。应用 __lt 而不是 __lte。在我尝试过的这些组合中: if request.method == 'GET': # limit records number if no filter invoices = Invoice.objects.all()[:100] else: start = request.POST.get('startDate') end = request.POST.get('endDate') invoices = Invoice.objects.all() if start: invoices = invoices.filter(created_at__gte=start) if end: invoices = invoices.filter(created_at__lt=end) 也尝试过: [...] else: start = request.POST.get('start') end = request.POST.get('end') if start and end: invoices = invoices.filter( Q(created_at__gte=start) & Q(created_at__lte=end)) if end and not start: invoices = invoices.filter(Q(created_at__lte=end)) if not end and start: invoices = invoices.filter(Q(created_at__gte=start)) 首先,我认为这是由于关于 ("DateTimeField %s received a naive datetime (%s) 的警告,即使有了 make_aware,问题仍然存在。我尝试在每一行上重建基本查询集。 else: start = request.POST.get('start') end = request.POST.get('end') tz_start = make_aware(datetime.strptime(start, '%Y-%m-%d')) tz_end = make_aware(datetime.strptime(end, '%Y-%m-%d')) if not start and end: invoices = Invoice.objects.filter(Q(created_at__lte=tz_end)) elif start and end: invoices = Invoice.objects.filter( Q(created_at__gte=tz_start) & Q(created_at__lte=tz_end)) elif start and not end: invoices = Invoice.objects.filter( Q(created_at__gte=tz_start)) else: invoices = Invoice.objects.all() messages.error(request, 'no filter applied') 是不是我错过了这么大的事情,以至于我都看不到它? 这个问题与 MySql、时区或其他与环境无关的问题之间没有关系。 经过 3 天的努力寻找解决方案,此页面让我走上了正确的道路 我不知道我的问题是否是因为我试图将日期输入与模型的 DateTimeField 进行比较,或者这种异常是否特定于使用 django_filters 进行日期过滤,但最后,django_filters.DateFromToRangeFilter拯救了我的一天(我应该说,我的一周)。代码减少了 3 倍,我的观点现在可以工作了。 过滤器.py import django_filters from websales.models import Invoice class InvoiceFilter(django_filters.FilterSet): created_at = django_filters.DateFromToRangeFilter( field_name='created_at', ) class Meta: model = Invoice fields = ['created_at'] views.py def invoices_with_filter(request): invoice_filter = InvoiceFilter(request.GET, queryset=Invoice.objects.all()) context = {} max_min = invoice_filter.qs.aggregate(Min( 'created_at'), Max('created_at')) context['max_date'] = max_min['created_at__max'] context['min_date'] = max_min['created_at__min'] context['invoices'] = invoice_filter.qs context['form'] = invoice_filter.form if invoice_filter.qs.count() == 0: messages.error(request, 'Aucune donnée correspondant aux filtres !') return render(request, 'websales/invoices.html', context=context) 对于那些想要 boostrap5 轻松地在模板中使用表单的人(我也花了时间找到方法),只需将 invoice_filter.form 的输入名称命名如下: created_at_before 和 created_at_after <form method="get" action="{% url 'websales:invoices' %}" class="row gy-2 gx-3 align-items-center mb-4"> {% csrf_token %} <div class="col-auto"> <div class="input-group"> <div class="input-group-text" id="start">Début</div> <input name="created_at_before" class="form-control me-3" type="date" value="{{ min_date|date:'Y-n-d' }}" /> </div> </div> <div class="col-auto me-4"> <div class="input-group"> <div class="input-group-text" id="end">fin</div> <input name="created_at_before" class="form-control" type="date" value="{{ max_date|date:'Y-n-d' }}" /> </div> </div> <div class="col-auto"> <button class="btn btn-success me-3" role="submit">Filtrer</button> <a class="btn btn-outline-secondary me-3" role="button" href="{% url 'websales:invoices' %}">Reset</a> <a class="btn btn-warning" role="button" href="#">Export CSV</a> </div> </form> 我还用 value="{{ max_date|date:'Y-n-d' }}" 预填充了输入字段 min/max 日期 瞧!

回答 1 投票 0

按最接近 0 的值对 Django 查询集进行排序

我有一个查询集,它返回与比赛中领先的条目列表...... 领导者= ContestEntry.objects.filter(名称=游戏,胜利=胜利) 获得这些数据后,我需要 pu...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.