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
的语言模型实例