I have a form in my forms.py that looks like this:
from django import forms class ItemList(forms.Form): item_list = forms.ChoiceField()
I need to populate the item_list with some data from the database. When generated in HTML item_list should be something like:
<select title="ItemList"> <option value="1">Select Item 1</option> <option value="2">Select Item 2</option> </select>
The options values in my select statement will change almost every time since a variable in the query will often change generating new results.
What do I need to put in the view.py and also in my template files to populate the ItemList with values from the database?
The database view is created by following the SQL and it can be injected into a customized data migration with the raw SQL execution command. The next step is to create a Django model which maps to this view so we can use Django ORM to retrieve the data from the view.
Using Form in a View In Django, the request object passed as parameter to your view has an attribute called "method" where the type of the request is set, and all data passed via POST can be accessed via the request. POST dictionary. The view will display the result of the login form posted through the loggedin.
Take a look at this example in the Django documentation:
Basically, you can use the queryset
keyword argument on a Field object, to grab rows from your database:
class BookForm(forms.Form): authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all())
Update
If you need a dynamic model choice field, you can hand over your item id in the constructor of the form and adjust the queryset accordingly:
class ItemForm(forms.Form): # here we use a dummy `queryset`, because ModelChoiceField # requires some queryset item_field = forms.ModelChoiceField(queryset=Item.objects.none()) def __init__(self, item_id): super(ItemForm, self).__init__() self.fields['item_field'].queryset = Item.objects.filter(id=item_id)
P.S. I haven't tested this code and I'm not sure about your exact setup, but I hope the main idea comes across.
Resources:
What you need to do is to find out which object do you actually want for e.g. if you want to find out a book named "Upvote-if-u-like!" then your urls.py should like
urlpatterns = [ path('textshare/<str:slug>',views.extract,name="textshare"),]
now when someone will search for mybook.com/textshare/upvote-if-u-like!/
it will take him/her to views.py which would look like
def extract(request,slug): context={} obj=bookForm.objects.get(title=slug) form=bookModelForm(instance=obj) context={'form':form} return render(request,'bookfound.html',context)
where bookForm is in Models.py and bookModelForm is in forms.py Happy Djangoing:)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With