2012-05-02 11 views
0

私はREST API Django-pistonからデータベースに新しい値を挿入しようとしています。django-piston追加値外部キー

私がフォローモデル

class Mobile_User(models.Model): 
id  = models.CharField(primary_key=True, max_length=255, unique=True) 
email = models.EmailField() 
name  = models.CharField(max_length=300) 

def __unicode__(self): 
    return u"%s - %s" % (self.id, self.email) 

class Mobile_User_Business(models.Model): 
mobile_user_id = models.ForeignKey(Mobile_User) 
business_id = models.ForeignKey(Business) 

def __unicode__(self): 
    return u"%s - %s" % (self.business_id, self.mobile_user_id) 

とhandlers.py

def create(self, request): 
    """ 
    Creates a new Mobile_User. 
    """ 
    if not hasattr(request, "data"): 
     request.data = request.POST 
    attrs = self.flatten_dict(request.data) 
    if self.exists(**attrs): 
     msj = "The user mobile already exist" 
     return msj 
    else: 
     mobile_user_business = Mobile_User_Business(mobile_user_id=attrs['mobile_user_id'], 
         business_id=attrs['business_id'],) 
     mobile_user_business.save() 
     return mobile_user_business 

を持つための情報を送信する:「12345 -X POST -d mobile_user_id =:

カール-u MYUSERを21221212 "-d business_id =" 1 "http://mydomain.com/api/newuser/

これは、返信先:


トレースバック(最後の最新の呼び出し):

ファイル "/dir/www/djangotest/apps/api/handlers.py"、ライン122、中 business_id = attrsに[ 'business_id' を作成]、)INIT SETATTRに

ファイル "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py"、ライン352、(自己、field.name 、rel_obj)

ファイル "/usr/local/lib/python2.7/dist-packag ES /ジャンゴ/ DB /モデル/フィールド/ related.py」、行331、 self.field.name、self.field.rel.to._meta.object_name)を設定)

とValueError:割り当てることができません"u'21221212 '": "Mobile_User_Business.mobile_user_id"は "Mobile_User"インスタンスである必要があります。


ありがとうございます!

答えて

1

これは、ユニコード値をmobile_user_idに割り当てようとしているためですが、djangoでは代わりにMobile_Userインスタンスが必要です。

あなたはこのような何かにそれを変更する必要があります。

... 
else: 
    # First get the instances 
    mobile_user = Mobile_User.objects.get(pk=attrs['mobile_user_id']) 
    business = Business.objects.get(pk=attrs['business_id']) 

    # Then use them in this model 
    mobile_user_business = Mobile_User_Business(mobile_user_id=mobile_user, 
        business_id=business,) 
    mobile_user_business.save() 
    return mobile_user_business 
+0

優秀!ありがとう! – LaBE

関連する問題