GVKun编程网logo

Django:从模板访问ModelMultipleChoiceField中的queryset(django默认模板引擎)

5

对于想了解Django:从模板访问ModelMultipleChoiceField中的queryset的读者,本文将是一篇不可错过的文章,我们将详细介绍django默认模板引擎,并且为您提供关于Dja

对于想了解Django:从模板访问ModelMultipleChoiceField中的queryset的读者,本文将是一篇不可错过的文章,我们将详细介绍django默认模板引擎,并且为您提供关于Django - 带有值的 AutoCompleteSelectMultipleField、Django forms 组件里的 ChoiceField、ModelChoiceField 和 ModelMutipleChoiceField 的区别、Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别、Django ModelChoiceField中修改过滤查询集queryset的两种方法分别是什么的有价值信息。

本文目录一览:

Django:从模板访问ModelMultipleChoiceField中的queryset(django默认模板引擎)

Django:从模板访问ModelMultipleChoiceField中的queryset(django默认模板引擎)

我找到了一种解决方法,方法是创建一个template_filter,它使用复选框的值并将对应的对象返回到模板。

template_tags.py

@register.filter(name='get_user')
def get_user(user_id):
    user = CustomUser.objects.get(pk=user_id.value)
    return user

模板

 <form method="post" id="assigned_users_form">
      {% csrf_token %}
      {{ assigned_users_form.errors }}
      {{ assigned_users_form.non_field_errors }}
      <div>
          {{ assigned_users_form.content.errors }}
          {% for user in assigned_users_form.users %}
          <div>
              {% with customuser=user.data.value|get_user %}
              {{user.tag}} {{customuser.first_name }}
              {% endwith %}
          </div>
          {% endfor %}
      <br>
      <div>
        <inputtype="submit" value="Save" name='submit_assigned_users_form'>
      </div>
  </form>

本质上,这段代码查看复选框小部件迭代(用户)并获取值,将该值传递给模板标记,然后将关联的对象返回到页面。

鉴于您要对每个对象重复查询搜索,而不是一次全部收集它们,所以这不是最佳解决方案。但这是我能想到的最好的方法。

Django - 带有值的 AutoCompleteSelectMultipleField

Django - 带有值的 AutoCompleteSelectMultipleField

如何解决Django - 带有值的 AutoCompleteSelectMultipleField?

我正在使用 AutoCompleteSelectMultipleField 中的 ajax_select.fields 并且它工作正常 - 我根据我正在编写的内容获取值,但我希望在我写一些东西之前显示所有值。有没有我遗漏的配置,或者我应该使用不同的配置吗?

此刻我有:

form.fields[''teams''] = AutoCompleteSelectMultipleField(
            ''master_teams'',plugin_options={
                ''source'': f"{reverse(''ajax_lookup'',kwargs={''channel'': ''master_teams''})}?game_slug={self.game.slug}"},required=False,help_text="Enter team name",)

在我的查找文件中,我只是过滤我的查询以获取特定数据,我想将它们显示为模板中的下拉列表。谁能给我任何提示如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Django forms 组件里的 ChoiceField、ModelChoiceField 和 ModelMutipleChoiceField 的区别

Django forms 组件里的 ChoiceField、ModelChoiceField 和 ModelMutipleChoiceField 的区别

阅读简要

首先我们要明白Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField是继承关系

 

ChoiceField

1. Django forms组件中ChoiceField字段是对models里choice的渲染

2. choices作用:在数据库中用元组的第一项作为存储的值,在显示时,将元组的第二项作为显示的内容,便于前端使用下拉框

3. 用get_xxxx_display()显示第二项的值

 

 

 

class Authors(models.Model):
    name = models.CharField("姓名", max_length=32)
    gender = models.SmallIntegerField(choices=((1, ""), (2, "")), default=1)

ModelChoiceField

1. Django forms组件中ModelChoiceField字段是对models里Forekey的渲染

2. 在前端渲染为下拉菜单

class Book(models.Model):
    title = models.CharField("书名", max_length=32)
    publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")

ModelMutipleChoiceField

1. Django forms组件中ModelMutipleChoiceField字段是对models里ManyToManyField的渲染

2. 在前端渲染为多选菜单

models.py

class Authors(models.Model):
    name = models.CharField("姓名", max_length=32)
    age = models.IntegerField("年龄")
    gender = models.SmallIntegerField(choices=((1, ""), (2, "")), default=1)

    def __str__(self):
        return self.name

class Book(models.Model):
    title = models.CharField("书名", max_length=32)
    publish_time = models.DateField()
    publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")
    authors = models.ManyToManyField(to="Authors")

    def __str__(self):
        return self.title


class Publish(models.Model):
    name = models.CharField("出版社名", max_length=32)
    address = models.CharField("地址", max_length=32)

    def __str__(self):
        return self.name

forms.py

from django import forms


class AuthorForm(forms.Form):
    name = forms.CharField(label="姓名", max_length=32)
    age = forms.IntegerField(label="年龄")
    gender = forms.ChoiceField(choices=((1, ""), (2, "")))


class BookForm(forms.Form):
    title = forms.CharField(label="书名", max_length=32)
    publish_time = forms.DateField(label="发行时间")
    publish = forms.ModelChoiceField(label="出版社", queryset=Publish.objects.all())
    authors = forms.ModelMultipleChoiceField(label="作者", queryset=Authors.objects.all())

 别忘记点赞哦!     ~.~

原文出处:https://www.cnblogs.com/pungchur/p/11969844.html

Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别

Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别

阅读简要

首先我们要明白Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField是继承关系

 

ChoiceField

1. Django forms组件中ChoiceField字段是对models里choice的渲染

2. choices作用:在数据库中用元组的第一项作为存储的值,在显示时,将元组的第二项作为显示的内容,便于前端使用下拉框

3. 用get_xxxx_display()显示第二项的值

 

 

 

class Authors(models.Model):
    name = models.CharField("姓名", max_length=32)
    gender = models.SmallIntegerField(choices=((1, ""), (2, "")), default=1)

ModelChoiceField

1. Django forms组件中ModelChoiceField字段是对models里Forekey的渲染

2. 在前端渲染为下拉菜单

class Book(models.Model):
    title = models.CharField("书名", max_length=32)
    publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")

ModelMutipleChoiceField

1. Django forms组件中ModelMutipleChoiceField字段是对models里ManyToManyField的渲染

2. 在前端渲染为多选菜单

models.py

class Authors(models.Model):
    name = models.CharField("姓名", max_length=32)
    age = models.IntegerField("年龄")
    gender = models.SmallIntegerField(choices=((1, ""), (2, "")), default=1)

    def __str__(self):
        return self.name

class Book(models.Model):
    title = models.CharField("书名", max_length=32)
    publish_time = models.DateField()
    publish = models.ForeignKey(to="Publish", on_delete=models.CASCADE, verbose_name="出版社")
    authors = models.ManyToManyField(to="Authors")

    def __str__(self):
        return self.title


class Publish(models.Model):
    name = models.CharField("出版社名", max_length=32)
    address = models.CharField("地址", max_length=32)

    def __str__(self):
        return self.name

forms.py

from django import forms


class AuthorForm(forms.Form):
    name = forms.CharField(label="姓名", max_length=32)
    age = forms.IntegerField(label="年龄")
    gender = forms.ChoiceField(choices=((1, ""), (2, "")))


class BookForm(forms.Form):
    title = forms.CharField(label="书名", max_length=32)
    publish_time = forms.DateField(label="发行时间")
    publish = forms.ModelChoiceField(label="出版社", queryset=Publish.objects.all())
    authors = forms.ModelMultipleChoiceField(label="作者", queryset=Authors.objects.all())

 别忘记点赞哦!     ~.~

原文出处:https://www.cnblogs.com/pungchur/p/11969844.html

Django ModelChoiceField中修改过滤查询集queryset的两种方法分别是什么

Django ModelChoiceField中修改过滤查询集queryset的两种方法分别是什么

本篇文章为大家展示了Django ModelChoiceField中修改过滤查询集 queryset的两种方法分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Django Form类定义中有一个 ModelChoiceField  对应的是Model 的外键,queryset 是返回一个查询集对象

例如,我有一个Form

class BookForm(forms.Form):
    books = forms.ModelChoiceField(queryset=Books.objects.all())

这似乎并没有什么问题。

但是我想要传递books的id,就出现了问题。我们可以如下解决。

1、重写init方法并接受新的关键字

def __init__(self,*args,**kwargs):
    id = kwargs.pop('id',None)
    super(BookForm,self).init(*args,**kwargs)
form = BookForm({'id':1})

2. 在视图中修改queryset对象

form = BookForm()
form.fields['books'].queryset = Books.objects.filter(id=1).all()

如果要设置默认值可以通过{initial={'id':1}的方法进行。

上述内容就是Django ModelChoiceField中修改过滤查询集 queryset的两种方法分别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注小编行业资讯频道。

关于Django:从模板访问ModelMultipleChoiceField中的querysetdjango默认模板引擎的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Django - 带有值的 AutoCompleteSelectMultipleField、Django forms 组件里的 ChoiceField、ModelChoiceField 和 ModelMutipleChoiceField 的区别、Django forms组件里的ChoiceField、ModelChoiceField和ModelMutipleChoiceField的区别、Django ModelChoiceField中修改过滤查询集queryset的两种方法分别是什么等相关内容,可以在本站寻找。

本文标签: