zoukankan      html  css  js  c++  java
  • 小金鱼呀 python-django-初识Form组件(Form实时更新)

    在使用选择标签时,需要注意choices的选项可以从数据库中获取,但是由于是静态字段 ***获取的值无法实时更新***,那么需要自定义构造方法从而达到此目的。

    方式一:(推荐)

     1 from app01 import models
     2 from django.forms.models import ModelChoiceField
     3 from django.forms import Form
     4 from django.forms import widgets
     5 from django.forms import fields
     6 
     7 class LoveForm(forms.Form):
     8     price = fields.IntegerField()
     9     user_id = fields.IntegerField(
    11         widget=widgets.Select()
    12     )
    13 
    14     def __init__(self,*args,**kwargs):
    15         # 拷贝所有的静态字段,复制给self.fields
    16         super(LoveForm,self).__init__(*args,**kwargs)
    17         self.fields['user_id'].widget.choices = models.UserInfo.objects.values_list('id', 'username')

    方式二:

    使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现

     1 from app01 import models
     2 from django.forms.models import ModelChoiceField
     3 from django import forms
     4 from django.forms import fields
     5 from django.forms import widgets
     6 
     7 class LoveForm(forms.Form):
     8     user_id2 = ModelChoiceField(
     9         queryset=models.UserInfo.objects.all(),
    10         to_field_name='id'
    11     )

    方式二显示的为对象,若要显示数据库里的具体值,需要在建表models.py里加入

        def __str__(self):
            return self.username
  • 相关阅读:
    ssh速度慢
    ps -ef和ps aux的区别
    docker国内镜像加速
    pptpd的log整理
    docker入门2--生命周期
    docker入门1--简介、安装
    Cent7.2单用户模式
    shell中得到当下路径所有文件夹名称
    在centos 7下升级内核
    Mysql如何将一张表重复数据删除
  • 原文地址:https://www.cnblogs.com/GodLv/p/9585251.html
Copyright © 2011-2022 走看看