如何识别已选择的模型对象



如何识别使用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。

最新更新