2011-05-19 19 views
6

Öğeleri görünümle şablona aktarırsam ve kullanıcının bir kullanıcının kaydına gönderilen değerlerden birini seçmesini istersem, şablonun sağ tarafında yalnızca bir döngü oluşturabilirim ?Django açılırsa Veritabanından doldurun

Bu nasıl bir şey olurdu? şablonunda :

<form method="POST" 
<select> 

</select> 
</form> 

Modeli:

class UserItem(models.Model): 
    user = models.ForeignKey(User) 
    item = models.ForeignKey(Item) 


class Item(models.Model): 
    name = models.CharField(max_length = 50) 
    condition = models.CharField(max_length = 50) 

Görünüm:

<form method="POST"> 
<select name="item_id"> 
{% for entry in items %} 
    <option value="{{ entry.id }}">{{ entry.name }}</option> 
{% endfor %} 
</select> 
</form> 

: Ben senin ihtiyaç doğru anlasalardı

def selectview(request): 
    item = Item.objects.filter() 
    form = request.POST 
    if form.is_valid(): 
     # SAVE 

    return render_to_response (
    'select/item.html', 
    {'item':item}, 
    context_instance = RequestContext(request) 
       ) 
+0

daha fazla bilgi, verin eklemeyi unutmayın sizin veri aktarımı hangi modeli gibi Şablona vb. –

+0

bilgileri ekledi. lütfen düzenlemeleri görün. teşekkürler – Eva611

+1

Öncelikle, Django Formlarını (http://docs.djangoproject.com/en/1.3/topics/forms/) kullanmanız için yeterince öneride bulunamıyorum - özellikle "modeller için formlar" bölümüne bakın . Görünüşe göre * bunu yapabilirim (örnek kodunuzda bir “form.is_valid” görüyorsanız), ancak gönderdiğiniz kod delice karıştırılmıştır. –

cevap

18

, şöyle bir şey yapabilirsiniz Bu arada, sen bağır d öğe yerine isim öğelerini verir, çünkü bu bir koleksiyondur (ancak bu bir yorumdur;)).

Böyle yaparsanız, veritabanındaki tüm öğelerin bir listesini görürsünüz.

Sonra, sonrası, işte yapmanız gerekenler:

Tabii
def selectview(request): 
    item = Item.objects.all() # use filter() when you have sth to filter ;) 
    form = request.POST # you seem to misinterpret the use of form from django and POST data. you should take a look at [Django with forms][1] 
    # you can remove the preview assignment (form =request.POST) 
    if request.method == 'POST': 
     selected_item = get_object_or_404(Item, pk=request.POST.get('item_id')) 
     # get the user you want (connect for example) in the var "user" 
     user.item = selected_item 
     user.save() 

     # Then, do a redirect for example 

    return render_to_response ('select/item.html', {'items':item}, context_instance = RequestContext(request),) 

, get_object_or_404