我想在模板的外键上显示 Django values() 而不是它的 id 作为对象
Instead of its id, I want to display Django values() on Foreign Key in template as object
我在 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
我希望能够在马匹表格上显示捐赠者姓名,以便与马匹捐赠者相关联。但是,我的表格只在表格上显示 "donor object" 。有什么可以帮我的吗?谢谢!
您可以这样定义 __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.
我在 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
我希望能够在马匹表格上显示捐赠者姓名,以便与马匹捐赠者相关联。但是,我的表格只在表格上显示 "donor object" 。有什么可以帮我的吗?谢谢!
您可以这样定义 __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.