2016-12-06 4 views
0

テーブルの最後のIDの値を増やして、次の行に別の値を入力できるようにします。私は私のpythonプロジェクトにOracle 11gデータベースを使用しています。djangoを使用してオブジェクトの最新の値をインクリメントできません

custID = Customer.objects.lates('CUSTOMER_ID') 
custID = int(custID) + 1 #received error 
custName = "Peter" 

Customer.objects.create('CUSTOMER_ID'=str(custID), 'CUSTOMER_NAME'=custName) #this line is ok 

...私のサンプルコードを参照してください、私はこのエラーを得た:TypeError: int() argument must be a string, a bytes-like object or a number, not 'Customer'

私はオンラインで検索しようとしたと

Customer.objects.create('CUSTOMER_NAME'=custName) 

のように私のコードを変更しますが、私のために働いていませんでした私のデータベースとPythonモデルでは自動的にインクリメントされません。

また、私はこれを試してみました。..

custID = sum(int(custID), 1) 

を申し訳ありませんが、私はジャンゴでちょうど新たなんです。私が正しくあなたを理解していれば

+0

'type(custID)'を使用して返されたcustIDのタイプを印刷できますか? –

+0

それは '' – jned29

+0

を表示します。エラーが発生しました。クラスの型を明示的にintに変換することはできません。 idを取得してインクリメントするには 'custID.id'を使う必要があります。下の答えを見てください。 –

答えて

1

さて、ここでの問題は、次のとおりです。

custID = Customer.objects.latest('CUSTOMER_ID') 

あなたは

custId = custID.CUSTOMER_ID + 1 
+0

ありがとう、それは今働く。 – jned29

1

Customer.objects.latest('CUSTOMER_ID')を返すオブジェクト、いないを使用する必要があるので、このステートメントは、Customerオブジェクトを返します。 id。あなたが望むのはこれです:

custID = Customer.objects.latest('CUSTOMER_ID').id 

ただし、新しい顧客を作成するときにIDを指定する必要はありません。通常、DjangoはID自体をピックアップします。

+0

ありがとう、それはまた私のコードで動作します – jned29

関連する問題