1. 程式人生 > >django mysql 表的一對一 一對多 多對多

django mysql 表的一對一 一對多 多對多

另一個 設置 char field 所有 一次循環 mode sele clas

表結構的設計

  一對一

  多對一 將key寫在多

  多對多

外鍵:

  描述 多對一的關系

  寫在多的一方

  class Book(models.Model)

    title = models.CharField(max_length=32,unique=Ture)

    publisher = models.ForeignKey (to=Publisher,on_deleete=models.CASADE)

    publisher = models.ForeignKey(to=‘Publisher‘, on_delete=models.CASCADE) 加雙引號,是映射

  book_obj.publisher --->> 書籍關聯的對象

  book_obj.publisher_id --->> 書籍關聯的對象id 直接從數據庫獲取的 可以直接點獲得

  設置外鍵(關聯出版社對象 ) 修改

  book_obj.publisher = 出版社對象

  book_obj.save()

  book_obj.publisher_id = 1

  book_obj.save()

  創建:

  models.Book.objects.create(title=‘新的書名‘,publisher=models.Publisher.objects.get(id=1))

  models.Book.objects.create(title=‘新的書名‘,publisher_id=1)

多對多

   當要獲取所有的對象中的另一個對象的時候,需要在函數中all() 在另一個html中all

  teacher_all = models.teacher_list.objects.all()   這裏的all取得是是所有的對象
  {% for teacher in teacher_all %}    這裏是獲取每個對象
    {% for cls in teacher.cls.all %}  這裏獲取的是是cls中的對象

  class Author(models.Model):

    name = models.CharField(max_length=32,unique=Ture)

    books = models.ManyToManyField(‘book‘)

  

  author_obj.books --->>> 不是關聯的對象,是管理的對象

  author_obj.books ---->> 獲取到跟作者關聯的所有書籍對象

  author_obj.books.set([1,2,3,4]) ---->>不是author_obj.save() 增加和修改時候使用set

  在獲取多個對象時使用getlist 獲取多個

  

  模板相關

if判斷
{% if book in edit_obj.books.all %}
<option value="{{ book.id }}" selected>{{ book.title }}</option>
{% else %}
<option value="{{ book.id }}">{{ book.title }}</option>
{% endif %}


{% if 條件1 %}
操作1
{% elif 條件2 %}
操作2
{% else %}
操作3
{% endif %}

for循環中
{% for i in name_list %}
{{ forloop.first }} 第一次循環
{{ forloop.last }} 最後一次循環
{% endfor %}

  

django mysql 表的一對一 一對多 多對多