回答編集履歴

3

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

2019/08/17 12:31

投稿

fightTT
fightTT

スコア27

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  def get_uuid_no_dash():
38
38
 
39
- return uuid.uuid4().hex
39
+ return uuid.uuid4().hex
40
40
 
41
41
 
42
42
 

2

コードの記述を一部修正

2019/08/17 12:31

投稿

fightTT
fightTT

スコア27

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- id = models.CharField(primary_key=True, default=get_uuid_no_dash(), max_length=33, editable=False)
43
+ id = models.CharField(primary_key=True, default=get_uuid_no_dash, max_length=33, editable=False, unique=True)
44
44
 
45
45
  ```
46
46
 

1

解決方法の追記

2019/08/17 12:30

投稿

fightTT
fightTT

スコア27

test CHANGED
@@ -17,3 +17,43 @@
17
17
 
18
18
 
19
19
  ですので表示する際(Djangoプロジェクトのurls.pyに記述するパスコンバータ)で解決すれば問題なさそうです。
20
+
21
+
22
+
23
+ ---
24
+
25
+ 以下、解決方法の追記
26
+
27
+ 1. `uuid.uuid4().hex`の記述で、ハイフン(ダッシュ)なしUUIDの値を返す関数の作成
28
+
29
+ 2. 1で帰ってきた値を生のUUID.uuid4の代わりに使用。その際に、UUIDFieldではなくなるので、CharFieldに変更。
30
+
31
+
32
+
33
+ `models.py`
34
+
35
+ ```Python
36
+
37
+ def get_uuid_no_dash():
38
+
39
+ return uuid.uuid4().hex
40
+
41
+
42
+
43
+ id = models.CharField(primary_key=True, default=get_uuid_no_dash(), max_length=33, editable=False)
44
+
45
+ ```
46
+
47
+
48
+
49
+ 3.パスコンバータを`<uuid:pk>`から`<slug:pk>`に変更してハイフンなしの値でマッチするようにする。
50
+
51
+
52
+
53
+ `urls.py`
54
+
55
+ ```Python
56
+
57
+ path('articles/<slug:pk>/', HogeView.as_view()),
58
+
59
+ ```