我在Django中显示外键的值而不是id时遇到了一些麻烦,你们有没有人能帮助我?
我的模特:
我有一个捐款人
class Donor(models.Model):
donor_first_name=models.CharField(max_length=50)
donor_middle_name=models.CharField(max_length=50, blank=True, null=True)
donor_last_name=models.CharField(max_length=50)
我有一匹有捐赠者的马:
lass Horse(models.Model):
horse_donor=models.ForeignKey(Donor)
和我的观点:
def horse_form(request):
if request.method == 'POST':
form =HorseForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponse('<script language="JavaScript"> alert("You have sucessful created a new Volunteer"); location.href="/login/horse/" </script>')
else:
form = HorseForm()
return render(request, 'loginPortal/horse_form.html', {'form' : form })
我的表格:
class HorseForm(ModelForm):
class Meta:
model = Horse
我希望能够在马形上显示捐赠者姓名,以便与马捐赠者相关联。但是,我的表单只是在表单上显示“捐赠对象”。能帮到我吗?谢谢!
答案 0 :(得分:1)
您可以像这样定义__str__
方法:
class Donor(models.Model):
donor_first_name=models.CharField(max_length=50)
donor_middle_name=models.CharField(max_length=50, blank=True, null=True)
donor_last_name=models.CharField(max_length=50)
def __str__(self):
return "%s %s %s" % (self.donor_first_name, self.donor_middle_name, self.donor_last_name)
另一种方法是使用ModelChoiceField的自定义子类
forms.py
from django import forms
from .models import Donor, Horse
class MyModelChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return "%s %s %s" % (self.donor_first_name, self.donor_middle_name, self.donor_last_name)
class HorseForm(forms.ModelForm):
horse_donor = forms.MyModelChoiceField(queryset=Donor.objects.all())
# other fields (if any), class Meta, etc.