2017-01-16 32 views
0

我有一个奇怪的问题。我正在使用与从Model返回的数据绑定的Select字段。它被定义为:Django 1.8:问题与使用cleared_data

choices = Subscription.objects.filter(is_full_version=False) 
subscription_id = forms.ModelChoiceField(queryset=choices) 

request.POST返回选项的idvalue属性,但是当我打电话: form.cleaned_data.get('subscription_id')它,而返回:

'subscription_id': <Subscription: Gold>

Gold是文本而标识。

request.POST而返回我想要什么: subscription_id': [u'3']

那是什么?

回答

2

当您从cleaned_data中获取ModelChoiceField的值时,将获得模型实例,而不是该id。

从实例中获取主键很容易。请记住处理None

subscription = form.cleaned_data.get('subscription_id') 
if subscription is not None: 
    subscription_id = subscription.pk