2017-10-19 54 views
1

目前,我有存储在一个Django模型结构如下一些数据:如何在Django下拉菜单窗体中显示包含在Django模型中的数据?

#Django model 
from django.db import models 

class Customer(models.Model): 
    first_name = models.Charfield(max_length = 120, null = False, blank = False) 
    last_name = models.Charfield(max_length = 120, null = False, blank = False) 

    def __str__(self): 
     return self.first_name+ " " + self.last_name 

我要显示所有存储在下拉菜单形式的客户模型客户。我试图在下列但我没有成功:

#Django form 
from .models import Customer 

# This throws as a result <Django.db.models.query.utils.deferred.attribute at 0x00013F> inside of the DropDown Menu form 
class DropDownMenuCustomer(forms.Form): 
    Customer = forms.ChoiceField(choices=[(x,x) for x in str(Customer.first_name)+str(" ")+ str(Customer.last_name))]) 

没有成功另一种可能性是:

#Django form 
from .models import Customer 

class DropDownMenuCustomer(forms.Form): 
    querySet = Customer.objects.all() 
    list_of_customers = [] 
    for customer in querySet: 
     list_of_customers.append(customer.first_name + " " + customer.last_name) 

    customer= forms.ChoiceField(choices=[(x) for x in list_of_customers)]) 

这最后可能没有找到list_of_customers,就好像变量尚未声明。如何在Django表单中显示存储在Django模型中的数据?

回答

3

你必须把它写不同。要获得所有的客户名称,您必须在自己的功能中定义它。这样你可以通过这种方式产生选择。

def customer_names(): 
    list_of_customers = [] 
    querySet = Customer.objects.all() 
    for customer in querySet: 
     list_of_customers.append(customer.first_name + " " + customer.last_name) 
    return list_of_customers 


class DropDownMenuCustomer(forms.Form): 

    customer= forms.ChoiceField(choices=[(x) for x in customer_names())]) 
1

可以使用forms.ModelChoiceField得多好,如:

customer = forms.ModelChoiceField(queryset=Customer.objects.all(), empty_label="(Nothing)") 

More information

相关问题