質問編集履歴

4

エラーコードの追加

2020/11/05 10:00

投稿

nre
nre

スコア35

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,20 @@
58
58
 
59
59
  ```
60
60
 
61
+
62
+
63
+ ```django
64
+
65
+ エラーコード
66
+
67
+ ine = Like.objects.create(ip_address=ip_address, user=user)
68
+
69
+ NameError: name 'user' is not defined
70
+
71
+
72
+
73
+ ```
74
+
61
75
  【その他詳細】
62
76
 
63
77
  djangoのバージョンは3.1でpython3です。

3

内容の修正

2020/11/05 10:00

投稿

nre
nre

スコア35

test CHANGED
@@ -1 +1 @@
1
- 【django】取得し情報がすでにdbに存するどうやって参照すればいいか教えて下さい。
1
+ 【django】リクエストで受けipアドレスをdbに存する方法を教えて下さい。
test CHANGED
@@ -1,14 +1,12 @@
1
1
  【実現したい事】
2
2
 
3
- 取得したipアドレスがすでに存在しているのかを参照し、
4
-
5
- その有無でif分岐点を作りたいです。
6
-
7
- 、参照方法知りたいです。またはなん検索すれば答えが得られるのか教えきたいです。
3
+ ボタンを押しユーザーのipアドレスLikeモデルに次々追加しきたいです。
8
-
9
- ※ipアドレスの有無でいいねボタンの連打を防止する為
10
4
 
11
5
 
6
+
7
+ 詳細ページに設置しているボタンを連打されない様に、
8
+
9
+ 押したユーザーのipアドレスを取得し一度押した事がある人は押せない様にしようと考えております。
12
10
 
13
11
 
14
12
 
@@ -24,27 +22,13 @@
24
22
 
25
23
  def like(request, pk):
26
24
 
27
- ip_address = get_client_ip(request)
25
+ ip_address = get_client_ip(request)#押したユーザーのipアドレス取得までは成功しております。
28
26
 
29
27
 
30
28
 
31
- if 「取得したipアドレスがすでにdbに保存されている場合(参照)」:
29
+ ine = Like.objects.create(ip_address=ip_address, user=user)
32
30
 
33
- user.like -= 1
34
-
35
- user.save()
31
+ ine.save()
36
-
37
- ips_delete = User.objects.filter(ip_address=ip_address).delete()
38
-
39
- else :
40
-
41
- user.like += 1
42
-
43
- user.save()
44
-
45
- ips = User.objects.create(ip_address=ip_address)
46
-
47
- ips.seave()
48
32
 
49
33
  ```
50
34
 
@@ -54,56 +38,26 @@
54
38
 
55
39
 
56
40
 
57
- class User(AbstractBaseUser, PermissionsMixin):
41
+ ''' Likeモデルはカスタムユーザーモデル(AbstractBaseUser)に紐付いております'''
58
42
 
59
- email = models.EmailField(_('email address'), unique=True)
43
+ class Like(models.Model):
60
44
 
61
- first_name = models.CharField(_('first name'), max_length=30, blank=True)
45
+ user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
62
46
 
63
- last_name = models.CharField(_('last name'), max_length=150, blank=True)
47
+ like_num = models.IntegerField(default=0)
64
48
 
65
49
  ip_address = models.CharField('IPアドレス', max_length=20)
66
50
 
67
51
 
68
52
 
69
- ```
53
+ def __str__(self):
70
54
 
71
-
72
-
73
- 【試した事】
74
-
75
- これだとカウントアップもダウンもされなかったです。
76
-
77
- ```django
78
-
79
-
80
-
81
- def api_like(request, pk):
82
-
83
- ip_address = get_client_ip(request) #ボタンを押した時点でipアドレスを取得している
84
-
85
-
86
-
87
- if not User.objects.filter(ip_address=ip_address):
88
-
89
- ips = User.objects.create(ip_address=ip_address)
90
-
91
- ips.save()
92
-
93
- user.like += 1
94
-
95
- user.save()
96
-
97
- else :
98
-
99
- ips_delete = User.objects.filter(ip_address=ip_address).delete()
100
-
101
- ips_delete.save()
55
+ return self.ip_address
102
-
103
- user.like -= 1
104
-
105
- user.save()
106
56
 
107
57
 
108
58
 
109
59
  ```
60
+
61
+ 【その他詳細】
62
+
63
+ djangoのバージョンは3.1でpython3です。

2

コーディングミスを修正

2020/11/05 09:57

投稿

nre
nre

スコア35

test CHANGED
File without changes
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  ips = User.objects.create(ip_address=ip_address)
90
90
 
91
- ips.seave()
91
+ ips.save()
92
92
 
93
93
  user.like += 1
94
94
 

1

試した事の変更

2020/11/05 05:27

投稿

nre
nre

スコア35

test CHANGED
File without changes
test CHANGED
@@ -72,15 +72,37 @@
72
72
 
73
73
  【試した事】
74
74
 
75
- 情報が保存されていいの動きませんでした
75
+ これだとカウントアップダウンもされなかったす。
76
76
 
77
77
  ```django
78
78
 
79
79
 
80
80
 
81
- if User.objects.filter(ip_address=ip_address):
81
+ def api_like(request, pk):
82
82
 
83
+ ip_address = get_client_ip(request) #ボタンを押した時点でipアドレスを取得している
83
84
 
85
+
86
+
87
+ if not User.objects.filter(ip_address=ip_address):
88
+
89
+ ips = User.objects.create(ip_address=ip_address)
90
+
91
+ ips.seave()
92
+
93
+ user.like += 1
94
+
95
+ user.save()
96
+
97
+ else :
98
+
99
+ ips_delete = User.objects.filter(ip_address=ip_address).delete()
100
+
101
+ ips_delete.save()
102
+
103
+ user.like -= 1
104
+
105
+ user.save()
84
106
 
85
107
 
86
108