python 外鍵用法 多對多關系 ORM操作 模板相關
一.app/models中寫類(設計表結構)
1.普通類
class A(models.Model):
id=modles.AutoField(primary_key=True)
name=models.CharField(max_length=32,unique=True)
2.設置外鍵
class B(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32, unique=True)
a=models.ForeignKey(to=A,on_delete=models.CASCADE) B必須寫在A後面
a=models.ForeignKey(to=‘A‘,on_delete=models.CASCADE) 加引號可以不按順序寫
def __repr__(self):
return "<B object: {}>".format(self.name)
3.設計多對多關系表
class C(models.Model):
name=models.CharField(max_length=32,unique=True)
bs=models.ManyToManyField(‘B‘)
def __repr__(self)
return "<C object: {}>".format(self.name)
__str__=__repr__
二.ORM操作
1.查
models.A.objects.get(id=1,name=‘xx‘) # 獲取一個對象 —— 》一個對象 沒有或多個會報錯
models.A.objects.all() #獲取所有對象 —— 》queryset 對象列表
models.A.objects.all().order_by(‘-id‘) #獲取所有對象 —— 》queryset 對象列表 並排序
models.A.object.filter(id=1,name=‘xx‘) 獲取滿足條件的所有對象 —— 》queryset 對
相關屬性
普通類:對象.id
對象.name
外鍵:
對象.id
對象.name
對象.a----->相關聯的a對象
對象.a_id --->相關聯的a對象的id
多對多:
對象.id
對象.name
對象.bs ------>獲得管理對象
對象.bs.all----> 獲取全部內容
2.增
普通:
new-obj=models.A.objects.create(name=‘新的出版社名字‘)
外鍵:
b_obj=models.B.objects.create(title=‘新的書名‘,a=a_obj)
b_obj=models.B.objects.create(title=‘新的書名‘,a_id=a_obj.id)
多對多:
c_obj = models.C.objects.create(name=‘作者名字‘)
c_obj.bs.set([1,3,5])
3.刪
刪除一條
models.A.objects.get(id=1,name=‘xx‘).delete()
刪除全部
models.A.objects.all().delete()
4.改
普通:
a_obj.name="新名字"
a_obj.save()
外鍵;
b_obj.name="新名字"
b_obj.a=a_obj
b_obj.a_id=a_obj.id
b_obj.save()
多對多
c_obj.name=‘新名字‘
c_obj.save()
c_obj.bs.set([1,2,3])
三.模板相關
render(request,‘模板名字‘,{‘new_name‘:‘新華出版社‘,‘err_meg‘:‘出版社已存在‘})
{{ 變量名 }} {{ new_name}} 新華出版社
標簽(與邏輯相關)
{% for a in a_list %}
{{ forloop.counter }}
{{ a.id }}
{{a.name }}
{% endfor%}
python 外鍵用法 多對多關系 ORM操作 模板相關