2014-03-06 57 views
0

我的模型的順序:節能項目

class Category(models.Model): 
    name = models.CharField(max_length=50, unique=True) 
    order = models.SmallIntegerField() 

我的模板:

{% for c in categories %} 
    {{ c }} -- <input type="text" name="order[{{ c.id }}]" value="{{ c.order }}"> 
    Submit Button 
{% endfor %} 

我的觀點:

def category_order(request): 
    print request.POST 
    print request.POST.getlist('order[]') 

輸出:

<QueryDict: {u'order[3]': [u'1'], u'order[1]': [u'1'], u'order[5]': [u'2'], u'order[4]': [u'33'], u'order[2]': [u'2'], u'order[6]': [u'3'], u'csrfmiddlewaretoken': [u'4XjehEwMdNK032342JkYJvBJabunKB'], u'order-btn': [u'order']}> 
[] 

所以我的問題是我如何循環每個訂單[N]並獲取類別ID及其新訂單值以將其保存到數據庫中?

回答

1

使用字典理解:

orders = {name.split('[')[1].split(']')[0]: request.POST[name] 
      for name in request.POST if name.startswith('order[')} 
# `orders` is not a dictionary maps `id`s to `order`s. 
# Do something with `orders`. 

或者用於循環使用簡單:

for name in request.POST: 
    if not name.startswith('order['): continue 
    id_ = name.split('[')[1].split(']')[0] 
    order = request.POST[name] 
    # Do something with `id_`, `order` 
1

如果你正在尋找有有序的對象,有一個圖書館,django-ordered-model,可以採取照顧。這包括一個很好的拖放管理視圖。例如:

from django.db import models 
from ordered_model.models import OrderedModel 

class Category(OrderedModel): 
    name = models.CharField(max_length=50, unique=True) 

    class Meta(OrderedModel.Meta): 
     pass