2011-05-19 14 views
6

से पॉप्युलेट करता है यदि मैं दृश्य के माध्यम से टेम्पलेट में आइटम पास करता हूं, और मैं चाहता हूं कि उपयोगकर्ता किसी उपयोगकर्ता के रिकॉर्ड में सबमिट किए गए मानों में से एक का चयन करे, तो मैंने केवल टेम्पलेट में लूप के लिए एक डॉन किया होगा ?Django Dropdown डेटाबेस

यह कैसा दिखता है? टेम्पलेट में:

<form method="POST" 
<select> 

</select> 
</form> 

मॉडल:

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) 

दृश्य:

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

:

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

अधिक जानकारियां, प्रदान करें जो मॉडल है, जो डेटा अपने स्थानांतरित की तरह टेम्पलेट के लिए, आदि –

+0

जानकारी जोड़ा गया। कृपया संपादन देखें। धन्यवाद – Eva611

+1

सबसे पहले, मैं पर्याप्त सिफारिश नहीं कर सकता कि आप Django फॉर्म (http://docs.djangoproject.com/en/1.3/topics/forms/) का उपयोग करें - विशेष रूप से, "मॉडल के लिए फॉर्म" अनुभाग देखें । ऐसा लगता है कि आप ऐसा कर सकते हैं * (मैं आपके उदाहरण कोड में 'if.is_valid' अगर' देखता हूं), लेकिन आपके द्वारा पोस्ट किया गया कोड बेहद उलझन में है। –

उत्तर

18

अगर मैं सही ढंग अपनी जरूरत को समझते थे, आप की तरह कुछ कर सकते हैं वैसे, आप शोक डी आइटम के बजाय नाम आइटम दें, क्योंकि यह एक संग्रह है (लेकिन यह सिर्फ एक टिप्पणी है;))।

ऐसा करने से, आपके पास डेटाबेस में सभी आइटमों की एक सूची होगी।

फिर, पोस्ट में, यहाँ आप क्या करने की जरूरत:

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

संबंधित मुद्दे