2017-12-21 9 views
0

UserモデルとAccountモデルの2つのDjangoモデルを作成しました。 Userモデルでは、私はすべての情報を持っており、Accountには、そのユーザーのアカウントの詳細があります。
私はユーザーを作成すると、それぞれのアカウントオブジェクトも作成されたビューを設計しました。
URL:/user/は新しいユーザーとアカウントオブジェクトを作成します。
しかし、私はAPIをチェックするためのテストを書くときに、私は新しいユーザーを作成しました。ユーザーオブジェクトにアクセスできますが、アカウントの詳細にアクセスするとmodels.object doesn't existがスローされます。Djangoテストapisモデルオブジェクトが存在しません

class User(models.Model): 
    user_name = models.CharField(max_length=35) 
    first_name = models.CharField(max_length=35) 
    last_name = models.CharField(max_length=35) 
    email = models.EmailField(max_length=255) 

class Account(models.Model): 
    user = models.ForeignKey(User, on_delete = models.CASCADE) 
    balance = models.IntegerField(default = 0) 

def post(self, request): 
    received_json_data = json.loads(request.body.decode("utf-8")) 
    user = User(user_name=received_json_data['user_name'], first_name=received_json_data['first_name'], 
       last_name=received_json_data['last_name'], email=received_json_data['email']) 
    user.save() 
    account = Account(user=user); 
    account.save(); 

class TestUser(TestCase): 
    def setUp(self): 
     self.c = Client() 
     user1 = {"email": "[email protected]", "user_name": "ramu", "first_name": "ramesh", "last_name": "yadav"} 
     data1 = json.dumps(user1) 
     self.response = self.c.post('/user/', data1, content_type="application/json") 
     self.assertEqual(self.response.status_code, 200) 
     account = Account.objects.get(pk =1) 

答えて

0

存在しない主キーでアカウントを取得しようとしています。 あなたはアカウントに以下の方法を取得しようとすることができます:

account = Account.objects.filter(user__email="[email protected]") 

これは、そのユーザーのすべてのアカウントが返されます。 1人のユーザーが複数のアカウントを持つ場合、getメソッドはエラーをスローします。

+0

こんにちはmaverickしかし、私はそのアカウントの詳細を与える 'アカウント/ ID'のようなAPIを持っています。そこにはまだ同じエラーが表示されています。どこでメソッドをpkで実装したか。 –

+0

これは、アカウントオブジェクトが作成されなかったか、間違った主キーを使用していることを意味します。アカウントが存在するかどうかデータベースにチェックインします。 – maverick

+0

私のすべてのAPIは郵便配達員で正常に動作しています。今私はこれらのAPIのテストケースを書いています。上記で作成したユーザーアカウントユーザーのclient.getメソッドにアクセスしています。 –

関連する問題