如何识别使用ModelChoiceField
选择的特定对象?
就我而言,我有型号Language
:
class Language(models.Model):
shortcut = models.CharField(max_length=6)
name = models.CharField(max_length=50)
price_per_sign = models.FloatField()
def __str__(self):
return self.shortcut+': '+self.name
形式:
class FreelancerRegistrationForm(forms.Form):
language = forms.ModelChoiceField(queryset=Language.objects.all().order_by('shortcut'))
在我的视图.py中,我不知道如何确定选择了哪个模型。
print freelancer_registration_form.cleaned_data['language']
返回对象的方法str,该方法有时不足以识别语言。有可能得到一个id
而不是这个str
方法吗?
当您在对象上调用print
时,python将在该对象上调用__str__
方法(hear是在表单中选择的语言模型的实例)
如果你想得到所选实例的id
,你应该做一些类似的事情:
chosen_language = freelancer_registration_form.cleaned_data['language']
chosen_language_id = chosen_language.id
或更改__str__
方法的定义,如:
def __str__(self):
return 'id: {self.id}, shortcut: {self.shortcut}, name: {self.name}'.format(
self=self)
CCD_ 9将CCD_ 10或CCD_。在这种情况下,它将把它们映射到ModelChoiceField
的语言模型实例。
您拥有Language对象。显然,如果您打印它,您将获得Unicode表示。但是元素是完整的对象,它的所有属性都包括id。