首页 > 自动化运维 > Django > Django多不多数据模型
2017
02-10

Django多不多数据模型

Django自动创建多对多表模型操作方法

models代码

from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Boy(models.Model):
    boyname = models.CharField(max_length=32)
    def __unicode__(self):
        return self.name

class Girl(models.Model):
    girlname = models.CharField(max_length=32)
    def __unicode__(self):
        return self.name
    b=models.ManyToManyField('Boy')

views代码

#coding:utf-8
from django.shortcuts import render
from django.http  import HttpRequest
from django.http.response import HttpResponse
from django.db import models
from t1.models import *

def add_boy(request):
    boy=request.GET.get('v',None)
    if boy:
        #数据库中添加数据
        Boy.objects.create(boyname=boy)
    return HttpResponse(boy)

def add_girl(request):
    girl=request.GET.get('v',None)
    if girl:
        Girl.objects.create(girlname=girl)
    return HttpResponse(girl)

def boy_to_girl(request):
    #多对多关系增加
    #获取id是1的女孩
    g1 =Girl.objects.get(id=1)
    #print g1.name
    #获取id是1的男孩
    b1=Boy.objects.get(id=1)
    #id是1的女孩和id是1的男孩建立关系
    g1.b.add(b1)
    #删除单个关系(b1)可以直接传入id的值(1)
    #g1.b.remove(b1)
#     g1.b.remove(1)
#     g1.b.remove(*[1,2,3])
    #删除全部关系
    #g1.b.clear()
#查询
    g1=Girl.objects.get(id=1)
    #ret=g1.b.all()
    #使用双下划线多对多查找(正向查找)
    #ret=Girl.objects.all().values('id','name','b__boyname')
    #使用双下划线多对多查找(反向查找)
    ret = Boy.objects.all().values('id','name','girl__girlname')

    print ret
    return HttpResponse(ret)

url代码

from django.conf.urls import url
from django.contrib import admin
from t1.views import *

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'add_boy/$',add_boy),
    url(r'add_girl/$',add_girl),
    url(r'boy_to_girl/$',boy_to_girl),
]




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复