1. 程式人生 > >python 外鍵用法 多對多關系 ORM操作 模板相關

python 外鍵用法 多對多關系 ORM操作 模板相關

get 設置 並排 list for 新名字 全部 delete char

一.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操作 模板相關