而不是它的id,我想在模板中的外键上显示Django values()作为对象

时间:2015-07-23 18:16:49

标签: django python-2.7 django-forms foreign-keys

我在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

我希望能够在马形上显示捐赠者姓名,以便与马捐赠者相关联。但是,我的表单只是在表单上显示“捐赠对象”。能帮到我吗?谢谢!

1 个答案:

答案 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.
相关问题