码迷,mamicode.com
首页 > 其他好文 > 详细

django进阶

时间:2017-05-14 22:53:38      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:相关   clear   max   foreign   技术分享   logs   rac   增删改   获取对象   

多对多:
创建多对多:
方式一:自定义关系表

class Host(models.Model):
    nid=models.AutoField(primary_key=True)
    hostname=models.CharField(max_length=32,db_index=True)
    ip=models.GenericIPAddressField(db_index=True)
    port=models.IntegerField()
    b=models.ForeignKey(‘Business‘,to_field=‘id‘)

#自定义关联
class HostToApp(models.Model):
     hobj=models.ForeignKey(to=‘Host‘,to_fields=‘nid‘)
     aobj=models.ForeignKey(to=‘Application‘,to_fields=‘id‘)

对表的操作和foreignkey一样,并且可以直接对这个表进行操作
HostToApp.objects.create(hobj_id=1,aobj_id=2)



方式二:自动创建关系表

 1 class Host(models.Model):
 2     nid=models.AutoField(primary_key=True)
 3     hostname=models.CharField(max_length=32,db_index=True)
 4     ip=models.GenericIPAddressField(db_index=True)
 5     port=models.IntegerField()
 6     b=models.ForeignKey(‘Business‘,to_field=‘id‘)
 7 
 8 class Application(models.Model):
 9       name=models.CharField(max_length=64)
10       auto=models.ManyToManyField("Host")

技术分享

缺点就是无法直接对第三张表进行操作,只能间接的方式来操作并且也无法在这个表增加多余字段
#现获取对象
obj = Application.objects.get(id=1)

# 然后间接操作第三张表中的内容

#增加
obj.r.add(1)#Application=1  host=1   obj中已经存在了app id 所以这里的add=1就是host表中的id
obj.r.add(2)#Application=1  host=2
obj.r.add(2,3,4)#Application=1  host=2/3/4  
obj.r.add(*[1,2,3,4])

#移除
obj.r.remove(1)
obj.r.remove(2,4)
obj.r.remove(*[1,2,3])

#清空obj中的app  id =1的所有内容
obj.r.clear()

#更新
obj.r.set([3,5,7])

# 所有相关的主机对象“列表” QuerySet
obj.r.all()

 

增删改查例子  

def app(reques):
    obj=models.Application.objects.all()
    print(obj)
    for i in obj:
        #查询
        print(i.name,i.auto.all())

    #增加app项目并且返回这个obj对象
    #obj=models.Application.objects.create(name=‘oracle‘)
    #增加1,3,4host到app
    #obj.auto.add(*[1,4,3])


    #删除
    # obj=models.Application.objects.get(id=1)
    # obj.auto.remove(1)
    # return render(reques,‘app.html‘,{‘obj‘:obj})
    return HttpResponse("ok")

 

django进阶

标签:相关   clear   max   foreign   技术分享   logs   rac   增删改   获取对象   

原文地址:http://www.cnblogs.com/menkeyi/p/6854169.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!