回答編集履歴
3
コードの記述を一部修正2
answer
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
`models.py`
|
18
18
|
```Python
|
19
19
|
def get_uuid_no_dash():
|
20
|
-
|
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
コードの記述を一部修正
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
|
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
解決方法の追記
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
|
+
```
|