如何识别选择了哪个模型对象?
How to identify which model object has been chosen?
如何识别使用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'))
在我的views.py中,我不知道如何识别选择了哪个模型。
print freelancer_registration_form.cleaned_data['language']
returns对象的方法str有时不足以识别语言。是否有可能获得 id
而不是此 str
方法?
您拥有 语言对象。显然,如果您打印它,您将获得 Unicode 表示形式。但是元素是完整的对象,其所有属性包括 id.
当你在对象上调用print
时,python会调用对象的__str__
方法(听说是在表单中选择的语言模型实例)
如果你想获得所选实例的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)
DjangoForm
会将 request.POST
或 request.GET
或任何字典作为数据映射到每个字段的类型。在这种情况下,它会将它们映射到 ModelChoiceField
.
的语言模型实例
如何识别使用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'))
在我的views.py中,我不知道如何识别选择了哪个模型。
print freelancer_registration_form.cleaned_data['language']
returns对象的方法str有时不足以识别语言。是否有可能获得 id
而不是此 str
方法?
您拥有 语言对象。显然,如果您打印它,您将获得 Unicode 表示形式。但是元素是完整的对象,其所有属性包括 id.
当你在对象上调用print
时,python会调用对象的__str__
方法(听说是在表单中选择的语言模型实例)
如果你想获得所选实例的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)
DjangoForm
会将 request.POST
或 request.GET
或任何字典作为数据映射到每个字段的类型。在这种情况下,它会将它们映射到 ModelChoiceField
.