django(四)

一、数据调用下拉菜单内容

 

viwes.py

from django.shortcuts import render,HttpResponse,render_to_response


from django import forms
from app01 import models
class IndexForm(forms.Form):
    # c = [
    #     (1,'CEO'),
    #     (2,'COO')
    # ]
    c = models.UserType.objects.all().values_list('id','caption')
    user_type_id = forms.IntegerField(widget=forms.Select(choices=c))

    def __init__(self,*args, **kwargs):                                         #这段目的添加完用户类型,网页立即显示
        # 父类构造方法:1、获取所有静态字段   2、fields = []
        super(IndexForm, self).__init__(*args, **kwargs)

        # print(self.fields['user_type_id'].widget.choices)
        self.fields['user_type_id'].widget.choices = models.UserType.objects.all().values_list('id','caption')

def index(request):
    # for i in range(10):                                              #添加表数据
    #     models.UserType.objects.create(caption='CE'+str(i))              
    # c = models.UserType.objects.all().count()
    # print(c)
    form = IndexForm()
    return render(request, 'index.html', {'form': form})

def add_user_type(request):                         #get http://127.0.0.1:8000/add_user_type?q=CVO   方式可以添加用户类型CVO
    q = request.GET.get('q', None)
    if q:
        models.UserType.objects.create(caption=q)
    return HttpResponse(q)

 

model.py

from django.db import models

# Create your models here.

class UserType(models.Model):
    caption = models.CharField(max_length=16)

显示效果

 

 

 

二、

model操作 F/Q
F:
temp = salary+500
models.UserInfo.objects.filter().update(salary=temp)
update userinfo set salary=salary+500

from django.db.models import F
models.UserInfo.objects.filter().update(salary=F('salary')+500)

Q:
构造搜索条件
1、传参
models.UserInfo.objects.filter(id=123,name='alex')

2、传字典
d = {'id': 123, 'name':'alex'}
models.UserInfo.objects.filter(**d)

<input name='id' />
<input name='name' />
获取用户输入,并构造成字典:
models.UserInfo.objects.filter(**c)
3、传Q对象
models.UserInfo.objects.filter(Q对象)

viwes.py

def index(request):

    form = IndexForm()
    from django.db.models import Q
    """
    q1 = Q()
    q1.connector = 'OR'
    q1.children.append(('id', 1))
    q1.children.append(('id', 2))
    q1.children.append(('id', 3))
    # 1 CE0
    # 2 CE1
    # 3 CE2

    obj = models.UserType.objects.filter(q1)
    for item in obj:
        print(item.id,item.caption)
    """
    con = Q()

    q1 = Q()
    q1.connector = 'OR'
    q1.children.append(('id', 1))
    q1.children.append(('id', 2))
    q1.children.append(('id', 3))

    q2 = Q()
    q2.connector = 'OR'
    q2.children.append(('caption', 'CE1'))
    q2.children.append(('caption', 'CE2'))

    con.add(q1, 'AND')
    con.add(q2, 'AND')

    obj = models.UserType.objects.filter(con)
    for item in obj:
        print(item.id,item.caption)

    return render(request, 'index.html', {'form': form})
    # 2 CE1
    # 3 CE2

 

 

三、中间件

posted @ 2016-09-24 05:08  不是云  阅读(212)  评论(0编辑  收藏  举报