首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django ModelChoiceField:根据url中的pk过滤对象

Django ModelChoiceField是Django框架中的一个表单字段类,用于生成一个下拉选择框,该选择框的选项是通过指定的查询集进行过滤的。

在使用Django ModelChoiceField时,可以通过url中的pk参数来过滤对象。具体步骤如下:

  1. 首先,在Django的视图函数或类视图中,通过获取url中的pk参数值。
  2. 使用获取到的pk值来过滤查询集,获取需要的对象集合。
  3. 将过滤后的对象集合作为参数传递给ModelChoiceField字段的queryset属性。
  4. 在前端模板中,使用该ModelChoiceField字段生成下拉选择框。

下面是一个完整的示例代码:

代码语言:txt
复制
# views.py
from django.shortcuts import render
from django import forms
from .models import YourModel

class YourForm(forms.Form):
    your_field = forms.ModelChoiceField(queryset=YourModel.objects.none())

def your_view(request, pk):
    # 根据url中的pk参数过滤对象
    filtered_objects = YourModel.objects.filter(some_field=pk)
    
    if request.method == 'POST':
        form = YourForm(request.POST)
        form.fields['your_field'].queryset = filtered_objects
        if form.is_valid():
            # 处理表单提交逻辑
            pass
    else:
        form = YourForm()
        form.fields['your_field'].queryset = filtered_objects
    
    return render(request, 'your_template.html', {'form': form})
代码语言:txt
复制
<!-- your_template.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">提交</button>
</form>

在上述示例中,我们首先定义了一个名为YourForm的表单类,其中包含一个ModelChoiceField字段your_field。在视图函数your_view中,我们根据url中的pk参数值过滤了YourModel对象,并将过滤后的对象集合赋值给your_field字段的queryset属性。然后,我们在前端模板中使用form.as_p渲染表单。

这样,根据url中的pk参数过滤对象的需求就得到了满足。对于Django ModelChoiceField的更多详细信息,可以参考腾讯云文档中的相关内容:Django ModelChoiceField

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 实现未经登录验证url过滤

由于需要对未经验证u人类进行过滤,经过查询django文档,发现提供了middelware(中间件)这个非常不错方法,写下来和大家分享。...) 这里对代码稍作解释: 对url进行过滤的话,需要使用正则匹配,因此这里使用compile来生成正则对象 其次需要考虑剔除一些不需要过滤url,例如登陆url,关于url,index或是default...等,这里我将这写url都写到配置settigns, 然后用list暂存正则对象,由于服务器启动时会自动加载middle,并且智慧加载一次,因此使用list不会占用多少内存。...然后我们在progress_request编写我们过滤函数,首先判断用户是否登陆 if 'user' not in request.session or not request.session['user...) 如果匹配到了要剔除url或是session存在的话,会继续执行后续操作并进行返回 3) 如何使用呢      使用middleware非常简单,类似servletfilter,我们在settings

1.2K40
  • Django获取URL数据

    Django获取URL数据 URL参数一般有两种形式。...q=Django&t=blog&u=zy010101 我们将第一种形式称为“URL路径参数”;第二种形式称为“URL关键字形式”。下面讲述如何在Django获取这两种形式数据。...在此之前,需要说明是,在URL携带数据方式一般是前端发起GET请求,至于为什么GET请求不在请求体携带参数,可以参考这篇文章:关于在GET请求中使用body URL路径参数 使用path函数...需要注意在Django,使用正则表达式来获取分组语法是(?Ppattern),其中 name 是组名,pattern 是要匹配模式。...HttpRequest对象属性GET、POST都是QueryDict类型对象 Django获取URL关键字参数可以通过HttpRequest.GET属性来获取。

    5.6K30

    动态设置djangomodel field默认值操作步骤

    ,逻辑正确,如果在shell修改ENV值,则新建modelignore_fort值并不是根据当前ENV值进行设置,而是保持原来值,达不到需求。...ModelChoiceField过滤查询集并将默认值设置为对象 我有一个Django Form类定义喜欢这个在Models: class AccountDetailsForm(forms.Form...adminuser = forms.ModelChoiceField(queryset=User.objects.all()) 这工作正常,但它有一些限制,我似乎不能解决: (1)我想在查询集上使用一个过滤器...(2)我想默认选择AccountDetailsForm数据库一个对象,我可以在视图中选择这样: User.objects.filter(account=accountid).filter(primary_user...我应该使用除ModelChoiceField之外其他方式给我这里需要灵活性吗? 谢谢。

    3K50

    django处理select下拉表单实例(从model到前端到post到form)

    现在假如要写一个按照”标题”,’内容’,’作者’等等进行针对性选择,这时需要涉及到使用select下拉表单来进行选择.django是可以比较简单解决这个问题....'), #前面是展示在前端界面的内容,后面的'first'是真正存在数据库 ('内容', 'second'), ('作者', 'third'), ) select_value...request.POST) if select_form.is_valid(): get_value = request.POST.get('sel_value', "") #这里可以取到下拉表单值...title </head <body <form method="post" action="" <select name="sel_value" {# 这里我们遍历form表单...表单,模型 结合前端select 显示 ModelChoiceField 使用方法 使用ModelChoiceField方法向前端提供模型 后端 forms.py default_tester =

    2.2K20

    Djangourl与视图详解(2)

    本文链接:https://blog.csdn.net/weixin_43908900/article/details/94892086 Djangourl与视图详解(2) url命名: 因为url...如果在代码写死可能会经常改代码。给url取个名字,以后使用url时候就使用他名字进行反转就可以了,就不需要写死url了。.../',views.login,name='login') ] 应用命名空间: 在多个APP中会出现相同url,因为在现实环境,一个项目不能是一个人完成,为了避免在反转时候出现混淆,我们需要在APP.../',include('cms.urls',namespace='cms1')), path('cms2/',include('cms.urls',namespace='cms2')), ] 根据实例命名空间指定具体...return redirect(reverse("%s:login"%current_namespace)) 应用命名空间与实例命名空间,根据相关代码理解两者差异,这样方便自己记忆

    1.1K20

    12.Django基础十之Form和ModelForm组件

    django.forms.models.ModelChoiceField queryset, # 查询数据库数据 empty_label="----...modelForm定义     form与model终极结合,会根据你model字段转换成对应form字段,并且并你生成标签等操作。     ...这个方法根据表单绑定数据创建并保存数据库对象。 ModelForm子类可以接受现有的模型实例作为关键字参数instance;如果提供此功能,则save()将更新该实例。...根据POST数据创建一个新form对象 >>> form_obj = BookForm(request.POST) # 创建书籍对象 >>> new_ book = form_obj.save()...":"用户名" }     然后在url对应视图函数实例化这个类,把这个对象传给前端 def student(request): if request.method ==

    3.3K20

    Jackson 动态过滤属性,编程式过滤对象属性

    场景:有时候我们做系统时候,比如两个请求,返回同一个对象,但是需要返回字段并不相同。 常见与写前端接口时候,尤其是手机端,一般需要什么数据就返回什么样数据。...此时对于返回同一个对象我们就要动态过滤所需要字段… Spring MVC 默认使用转json框架是 jackson。...大家也知道, jackson 可以在实体类内加注解,来指定序列化规则,但是那样比较不灵活,不能实现我们目前想要达到这种情况 下面用编程式方式实现过滤字段....json不存在属性 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);...IOException e) { e.printStackTrace(); throw new RuntimeException("将json字符转换为对象时失败

    4.4K21

    根据规则过滤掉数组重复数据

    今天有一个需求,有一些学生成绩数据,里面包含一些重复信息,需要从数组对象过滤掉重复数据。 例如,有一个包含学生成绩数组,其中每个学生成绩可能出现多次。...我们需要从这个数组过滤掉重复成绩,只保留每个学生最高分数。 可以使用 Array.prototype.filter() 方法来过滤掉数组重复数据。...该方法接受一个回调函数作为参数,判断数组每个元素是否满足某个条件。如果回调函数返回 true,则该元素将被保留在新数组。否则,该元素将被过滤掉。...我们还可以使用 Array.prototype.filter() 方法来根据更复杂规则过滤掉数组重复数据。 例如,我们可以根据对象某个属性来过滤掉重复数据。...未经允许不得转载:Web前端开发资源网 » 根据规则过滤掉数组重复数据

    15710

    Django内置通用类视图及实例

    属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,将取代model提供值 context_object_name: 指定要在上下文中使用变量名称...: 指定在上下文中使用变量名称. pk_url_kwarg: URLconf,包含逐渐关键字参数名称.默认为'pk'. get_context_data:返回显示对象上下文数据....None):返回该视图要显示单个对象.如果提供了queryset,该queryset将作为对象查询源,否则,将使用get_queryset().get_object()从视图所有参数查找pk_url_kwarg...根据官网文档例子,我们先在projtrack/views.py添加项目新增和修改视图代码: # projtrack/views.py ......根据报错提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转url

    2.9K40
    领券