2017-09-13 9 views
0

ここで私は例外処理のために苦労しています。ここに私のデータモデルの詳細があります。私はここにはPostgreSQLデータベースを使用していモデル -Djangoで処理する方法 - 例外のタイプ:MultipleObjectsReturned

class Routes(models.Model): 
    serial_no = models.IntegerField(primary_key=True) 
    toll = models.CharField(max_length=1000, blank=True, null=True) 
    cost = models.CharField(max_length=300, blank=True, null=True) 
    t = models.ForeignKey('Tollmaster', models.DO_NOTHING, blank=True, null=True) 
    r = models.ForeignKey(Routeinfo, models.DO_NOTHING) 

    class Meta: 
     managed = True 
     db_table = 'routes' 
     unique_together = (('serial_no', 'r'),) 

しかし、管理パネルで、私はエラー

MultipleObjectsReturned at /admin/tollm/routes/27/change/ 
get() returned more than one Routes -- it returned 2! 
Request Method: GET 
Request URL: http://127.0.0.1:8000/admin/tollm/routes/27/change/ 
Django Version: 1.11.5 
Exception Type: MultipleObjectsReturned 
Exception Value:  
get() returned more than one Routes -- it returned 2! 
Exception Location: C:\Users\prash\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\db\models\query.py in get, line 384 
Python Executable: C:\Users\prash\AppData\Local\Programs\Python\Python36-32\python.exe 
Python Version: 3.6.2 

を取得しています

経路このテーブルのスキーマは、

   Table "public.routes" 
    Column |   Type   | Modifiers 
-----------+-------------------------+----------- 
serial_no | integer     | not null 
toll  | character varying(1000) | 
cost  | character varying(300) | 
t_id  | integer     | 
r_id  | character varying(300) | not null 
Indexes: 
    "sno_rid_pkey" PRIMARY KEY, btree (serial_no, r_id) 
Foreign-key constraints: 
    "r_rinfo_fk" FOREIGN KEY (r_id) REFERENCES routeinfo(r_id) 
    "t_id_fk" FOREIGN KEY (t_id) REFERENCES tollmaster1(tid) 

ですどんな助けもありがとう。

+1

少なくとも、エラーが発生したコードを表示する必要があります。しかし、エラーメッセージは、どのような場合でも明らかです:何があなたのために混乱していますか? –

+0

私のテーブルの列にこの例外「MultipleObjectsReturned」をどのように扱うか分かりませんが、重複した値があります。 – Prashant

+0

データが壊れています...重複を見つけて削除するか、データベースを削除して新しいデータを作成します(データが重要でない場合) – amrit

答えて

1

モデルがテーブルスキーマと一致しません。テーブルスキーマには、serial_noとr_idに複数列の主キーがありますが、モデルではserial_noを単一列の主キーとして指定しています。

Djangoは複数列の主キーをサポートしていませんsee here for the details

私は別の自動インクリメントの主キー列「ID」を追加して、ユニーク制約にあなたの現在の主キーを変更するには、あなたのスキーマを変更することをお勧め

+0

ありがとう!私の問題は解決されました。 – Prashant

関連する問題