回答編集履歴
3
コードの記述を一部修正2
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
def get_uuid_no_dash():
|
38
38
|
|
39
|
-
|
39
|
+
return uuid.uuid4().hex
|
40
40
|
|
41
41
|
|
42
42
|
|
2
コードの記述を一部修正
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
id = models.CharField(primary_key=True, default=get_uuid_no_dash
|
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
解決方法の追記
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
|
+
```
|