質問するログイン新規登録

回答編集履歴

3

コードの記述を一部修正2

2019/08/17 12:31

投稿

fightTT
fightTT

スコア27

answer CHANGED
@@ -17,7 +17,7 @@
17
17
  `models.py`
18
18
  ```Python
19
19
  def get_uuid_no_dash():
20
- return uuid.uuid4().hex
20
+ return uuid.uuid4().hex
21
21
 
22
22
  id = models.CharField(primary_key=True, default=get_uuid_no_dash, max_length=33, editable=False, unique=True)
23
23
  ```

2

コードの記述を一部修正

2019/08/17 12:31

投稿

fightTT
fightTT

スコア27

answer CHANGED
@@ -19,7 +19,7 @@
19
19
  def get_uuid_no_dash():
20
20
  return uuid.uuid4().hex
21
21
 
22
- id = models.CharField(primary_key=True, default=get_uuid_no_dash(), max_length=33, editable=False)
22
+ id = models.CharField(primary_key=True, default=get_uuid_no_dash, max_length=33, editable=False, unique=True)
23
23
  ```
24
24
 
25
25
  3.パスコンバータを`<uuid:pk>`から`<slug:pk>`に変更してハイフンなしの値でマッチするようにする。

1

解決方法の追記

2019/08/17 12:30

投稿

fightTT
fightTT

スコア27

answer CHANGED
@@ -7,4 +7,24 @@
7
7
  > 取り出す時にuuid.UUID型になります.
8
8
  > UUID型の値,str型にすると550e8400-e29b-41d4-a716-446655440000みたいに間にハイフンが入っちゃいます
9
9
 
10
- ですので表示する際(Djangoプロジェクトのurls.pyに記述するパスコンバータ)で解決すれば問題なさそうです。
10
+ ですので表示する際(Djangoプロジェクトのurls.pyに記述するパスコンバータ)で解決すれば問題なさそうです。
11
+
12
+ ---
13
+ 以下、解決方法の追記
14
+ 1. `uuid.uuid4().hex`の記述で、ハイフン(ダッシュ)なしUUIDの値を返す関数の作成
15
+ 2. 1で帰ってきた値を生のUUID.uuid4の代わりに使用。その際に、UUIDFieldではなくなるので、CharFieldに変更。
16
+
17
+ `models.py`
18
+ ```Python
19
+ def get_uuid_no_dash():
20
+ return uuid.uuid4().hex
21
+
22
+ id = models.CharField(primary_key=True, default=get_uuid_no_dash(), max_length=33, editable=False)
23
+ ```
24
+
25
+ 3.パスコンバータを`<uuid:pk>`から`<slug:pk>`に変更してハイフンなしの値でマッチするようにする。
26
+
27
+ `urls.py`
28
+ ```Python
29
+ path('articles/<slug:pk>/', HogeView.as_view()),
30
+ ```