作者和书籍的增删改查 多对多

主要内容;

1  author类的属性操作

  author_list = author.objects.all()       获取所有的作者的对象列表

  模板语言的for循环:{% for author in author_list %}

  author.id                                获取id属性

  author.name                          获取name属性

  author.books                         获取操作的对象, 是一个桥梁, 用于设置两者之间的对应关系

  author.books.all()                 取到所有有关书籍的对象列表

  模板语言的if判断:

   {% for book in author.books.all %}

    {% if  forloop.last%}  {{ book.titlte}}

    {% else %}                {{book.title}},

    {%endif%}

   {%end for%}

2  多对多的增操作

  对于select标签获取多个值要采用getlist

  book_ids = request.POST.getlist('book_ids')

  new_obj = author.objects.create(name='新值')

  new_obj.books.add(*book_ids)          /               new_obj.books.set([book_ids])

3 多对多的删操作:

  删除多个对象: Author.objects.filter(id= 'delete_id').delete()

  删除单个对象: book.obj.delete()

4 多对多的编辑操作

  用到select标签的mutiple复用属性

  <select name="book_id" multiple>
        {% for book in book_list %}
            {% if book in edit_author.books.all %}
                <option selected value="{{ book.id }}">{{ book.title }}</option>
            {% else %}
                <option value="{{ book.id }}">{{ book.title }}</option>
            {% endif %}
        {% endfor %}
    </select>

  

  

    

猜你喜欢

转载自www.cnblogs.com/gyh412724/p/9756826.html
今日推荐