Python 如何确定选择了哪个模型对象?
如何识别使用Python 如何确定选择了哪个模型对象?,python,django,forms,django-models,django-forms,Python,Django,Forms,Django Models,Django Forms,如何识别使用modelcooicefield选择的特定对象 在我的例子中,我有model语言: 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 sel
modelcooicefield
选择的特定对象
在我的例子中,我有model语言
:
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'))
在我的views.py中,我不知道如何确定选择了哪个模型
print freelancer_registration_form.cleaned_data['language']
返回对象的方法str,该方法有时不足以标识语言。是否可以获取
id
而不是此str
方法?您拥有Language对象。显然,如果您打印它,您将得到Unicode表示。但是元素是完整的对象,其所有属性包括id。当您在对象上调用print
时,python将在对象上调用\uuu str\uu
方法(hear是在表单中选择的语言模型的实例)
如果要获取所选实例的id
,应执行以下操作:
chosen_language = freelancer_registration_form.cleaned_data['language']
chosen_language_id = chosen_language.id
或者更改\uuuu str\uuu
方法的定义,如:
def __str__(self):
return 'id: {self.id}, shortcut: {self.shortcut}, name: {self.name}'.format(
self=self)
DjangoForm
将映射请求。发布或请求。获取或任何字典作为每个字段类型的数据。在这种情况下,它会将它们映射到modelcooicefield
的语言模型实例