标签: django-queryset

Django DetailView 的查询集为 true 时如何返回 404

我的模型中有一个字段

class myModel(models.Model):
    published = models.BooleanField(
        default=False,
        help_text="Whether this is visible."
    )
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的详细视图非常简单明了

class myDetailView(DetailView):
    template_name = "detail.html"
    model = myModel
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法,在布尔值为 False 的情况下在相应的 django.views.generic.DetailView 上呈现 404 错误。如何才能实现这一目标?

django django-queryset

2
推荐指数
1
解决办法
267
查看次数

如何更新 Django 中查询集中所有对象的字段值?

我想将字段“卷”更新为卷+=change_by。我想通过“change_by”变量增加查询集中所有对象的该字段的现有值,无论“change_by”变量包含什么。

queryset = QueueStatusModel.objects.all()
queryset.update(volume+=iph_change)
Run Code Online (Sandbox Code Playgroud)

这不起作用。有人可以帮忙吗?

python django django-queryset

2
推荐指数
1
解决办法
3385
查看次数

一天和一周的总用户数

我想获得一天和一周内加入的用户总数,我尝试如下

member_in_day = User.objects.exclude(is_staff=True)\
    .annotate(day=TruncDay('date_joined')).values('date_joined') \
    .annotate(total_members=Count('date_joined')) \
    .order_by('-date_joined')
member_in_week = User.objects.exclude(is_staff=True)\
    .annotate(week=TruncWeek('date_joined')).values('date_joined') \
    .annotate(total_members=Count('date_joined')) \
    .order_by('-date_joined')
Run Code Online (Sandbox Code Playgroud)

该模型是用户,我得到的两个查询的输出是相同的,而不是一天它也给出其他查询集。如何将今天的总计和本周的总计添加到模板中

<QuerySet [{'date_joined': datetime.datetime(2020, 12, 28, 16, 47, 40, 509134, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 23, 11, 8, 19, 241355, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 23, 11, 6, 14, 20673, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 22, 9, 25, 45, 14632, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 22, 9, 24, 25, 819750, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 20, 12, 7, …
Run Code Online (Sandbox Code Playgroud)

django django-orm django-queryset

2
推荐指数
1
解决办法
551
查看次数

在一个循环中连接Django QuerySets正确的事情要做什么?

我有一个名为Collection的Django模型,它代表一组项目(CollectionItem).每个集合仅包含特定类型的项目.(CollectionItem有Collection的外键).

我想获取特定类型的公共标记列表中的所有CollectionItem,并返回按特定字段排序.这是我使用的查询代码:

lists = Collection.objects.filter(is_public=True, type=7)
items = CollectionItem.objects.none()
for list in lists:
    items |= CollectionItem.objects.filter(collection=list)
items = items.order_by('name')
Run Code Online (Sandbox Code Playgroud)

我必须想象,当我拥有一个包含大量列表和项目的大型数据库时,这根本无法很好地扩展.在Django中有更好的方法吗?或者与其他我不应该担心的选项相比,查询循环中涉及的低效率是否可以忽略不计?

django django-queryset

1
推荐指数
1
解决办法
659
查看次数

Django - 如何将QuerySet转换为Q对象?

有没有办法在Qjango中将QuerySet转换为Q对象?

我的具体动机:我想从另一个QuerySet(qs_B)中减去一个QuerySet(qs_A).我能想到的唯一方法是使用exclude()和一个等同于qs_A的Q对象.

例:

def my_function(qs_A, qs_B):
    # Here I need to transform qs_A to a Q object q_obj_A
    qs_new = qs.exclude(q_obj_A)
    return qs_new
Run Code Online (Sandbox Code Playgroud)

django django-queryset django-q

1
推荐指数
1
解决办法
438
查看次数

Django queryset更新字段为小写字母-Django

我想随时更新各种型号。

我需要使用小写字母等价更新varchar字段。


知道是否可以通过单个查询集完成?

python sql django django-models django-queryset

1
推荐指数
1
解决办法
1258
查看次数

搜寻在Django的通配符

我们怎样才能在Django中进行通配符搜索.如果我从数据库中的列表中过滤用户名,如何使用这些确切的用户名或部分用户名显示过滤后的数据.

def filter(request):
    val3='' 
    if request.GET.has_key('choices'):
        val2=request.GET.get('choices')
    if request.GET.has_key('textField'):
        val3=request.GET.get('textField')
    if request.POST:
        val2=request.POST.get('choices')    
        val3=request.POST.get('textField')
    if val2=='Designation':                
        newData = EmployeeDetails.objects.filter(designation=val3) 
        flag=True 
    elif val2=='Name':
        newData = EmployeeDetails.objects.filter(userName=val3)
        flag=True 
    elif val2=='EmployeeID':
        newData = EmployeeDetails.objects.filter(employeeID=val3)  
        flag=True       
    elif val2=='Project':
        newData = EmployeeDetails.objects.filter(project=val3)   
        flag=True   
    elif val2=='DateOfJoin':
        newData = EmployeeDetails.objects.filter(dateOfJoin=val3) 
        flag=True       
    else:
        return HttpResponseRedirect('/employeeList/')
Run Code Online (Sandbox Code Playgroud)

这是我的过滤功能.现在用精确的单词过滤.我想显示userNames,即使它的一部分用于过滤.请帮我解决这个问题,因为我是Django的新手

django django-templates django-models django-queryset django-views

1
推荐指数
2
解决办法
6434
查看次数

我遇到了关于django Queryset的棘手问题

棘手的代码:

user = User.objects.filter(id=123)
user[0].last_name = 'foo'
user[0].save()  # Cannot be saved.
id(user[0])     # 32131
id(user[0])     # 44232 ( different )
Run Code Online (Sandbox Code Playgroud)

用户无法以这种方式保存.

普通代码:

user = User.objects.filter(id=123)
if user:
  user[0].last_name = 'foo'
  user[0].save()  # Saved successfully.
  id(user[0])     # 32131
  id(user[0])     # 32131 ( same )
Run Code Online (Sandbox Code Playgroud)

那么,问题是什么?

python django django-queryset

1
推荐指数
1
解决办法
106
查看次数

在ModelMultipleChoiceField中定义选择时,如何合并两个查询集?

我在两个不同的地方使用一段代码,以便动态生成一些表单字段。在这两种情况下,dynamic_fields都是一个字典,其中的键是对象,值是对象列表(在空列表的情况下,值是False):

class ExampleForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        dynamic_fields = kwargs.pop('dynamic_fields')
        super(ExampleForm, self).__init__(*args, **kwargs)

        for key in dynamic_fields:
            if dynamic_fields[key]:
                self.fields[key.description] = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=dynamic_fields[key], required=False)


    class Meta:
        model = Foo
        fields = ()
Run Code Online (Sandbox Code Playgroud)

在一个视图中,对于任何键,该值都是通过单个数据库查询(单个正常查询集)返回的对象列表。这种观点很好。

在另一个视图中,它需要多个查询才能获得构造给定值所需的一切。我首先实例化具有等于空白列表的值的字典,然后使用基本列表理解(dict[key] += queryset)一次将从这些多个查询中获得的查询集添加到适当的列表中。这使每个值成为一个二维列表,然后通过执行以下操作将其展平(并删除重复项):

for key in dict:
    dict[key] = list(set(dict[key]))
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方法-将每个查询集中的查询直接附加到值/列表,使用append而不是将其保留为列表列表,+=但每次都会遇到相同的错误:'list' object has no attribute 'none'

通过回溯查看,错误出现在表单的clean方法中。这是django.forms.models中代码的相关部分:

def clean(self, value):
    if self.required and not value:
        raise ValidationError(self.error_messages['required'], code='required')
    elif not self.required and not value:
        return …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-queryset

1
推荐指数
1
解决办法
2082
查看次数

Django Queryset:列引用含糊不清,带有额外的queryset

我有下一个查询集:

Article.objects.filter(finished=True, updated_at__range=[start, end]).extra(
    select={'hour': 'extract(hour from updated_at)'}).values('hour').annotate(categorized=Count('id'))
Run Code Online (Sandbox Code Playgroud)

我得到错误:

“ ProgrammingError:列引用” updated_at“含糊不清LINE 1:SELECT(从updated_at提取(小时))AS” hour“,COUNT(” art ...“

我应该怎么做?

编辑:查询集的工作原理不按日期“ updated_at__range = [开始,结束]”进行过滤,但我需要该过滤器。

python django django-queryset django-postgresql

1
推荐指数
2
解决办法
1876
查看次数