官方文档:http://docs.djangoproject.com/en/dev/ref/forms/fields/#modelchoicefield
默认的是显示 Model().__unicode__() 里的内容,下面几个位置都可以改,在任一一个地方改都可以
方法1:
class BookForm(ModelFormBase):
def __init__(self, *args, **kwargs):
super(self.__class__, self).__init__(*args, **kwargs)
self.fields['person'].queryset = Person.objects.all()
self.fields['person'].label_from_instance = lambda obj: "%s" % (obj.name)
class Meta:
model = Book
mytest = forms.CharField(max_length=5)
方法2:
from django.forms.models import ModelChoiceField
class PersonModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "%s" % obj.name
class BookForm(ModelFormBase):
class Meta:
model = Book
mytest = forms.CharField(max_length=5)
person = PersonModelChoiceField(queryset = Person.objects.all())
方法3:
class Person(ModelPerson, MPerson):
def __unicode__(self):
return "%s" % self.name
方法4:view中动态的更改
def create_book(request):
form = BookForm()
form.fields['category'].queryset = request.user.categories.all()
#form.base_fields['category'].queryset = request.user.categories.all()
ok了,具体的用哪个这个看需求,哈哈
Last modified by vkill on2011/05/19 11:25
默认的是显示 Model().__unicode__() 里的内容,下面几个位置都可以改,在任一一个地方改都可以
方法1:
class BookForm(ModelFormBase):
def __init__(self, *args, **kwargs):
super(self.__class__, self).__init__(*args, **kwargs)
self.fields['person'].queryset = Person.objects.all()
self.fields['person'].label_from_instance = lambda obj: "%s" % (obj.name)
class Meta:
model = Book
mytest = forms.CharField(max_length=5)
方法2:
from django.forms.models import ModelChoiceField
class PersonModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return "%s" % obj.name
class BookForm(ModelFormBase):
class Meta:
model = Book
mytest = forms.CharField(max_length=5)
person = PersonModelChoiceField(queryset = Person.objects.all())
方法3:
class Person(ModelPerson, MPerson):
def __unicode__(self):
return "%s" % self.name
方法4:view中动态的更改
def create_book(request):
form = BookForm()
form.fields['category'].queryset = request.user.categories.all()
#form.base_fields['category'].queryset = request.user.categories.all()
ok了,具体的用哪个这个看需求,哈哈
Last modified by vkill on2011/05/19 11:25
网友评论(0):


