Django: Я пытаюсь сохранить ip адрес в поле при входе пользователя в систему, после я проверяю, был ли он добавлен на странице администратора, но он остается пустым
Я расширил стандартную модель User для добавления поля ip (это работает), после этого при попытке входа пользователя в систему это работает, но когда я проверяю на странице администратора, поле ip адреса остается пустым, ip адрес не сохраняется
admin.py
class IpaddressInline(admin.StackedInline):
model = IpAddress
can_delete = False
verbose_name_plural ="ipaddress"
class UserAdmin(BaseUserAdmin):
inlines = (IpaddressInline,)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
В models.py
class IpAddress(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE, null=True, blank=True)
ip = models.GenericIPAddressField()
Это мои формы входа
class AuthenticationForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
def clean(self, *args, **kwargs):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
if username and password:
user = authenticate(username=username, password=password,)
if not user:
raise forms.ValidationError('Wrong username or password')
return super(AuthenticationForm,self).clean(*args, **kwargs)
Вид
def login(request):
context = {}
form = AuthenticationForm(request.POST)
if request.POST:
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
ip_address = request.META.get('HTTP_X_FORWARDED_FOR')
if ip_address :
ipaddress = ip_address.split(',')[-1].strip()
else:
ipaddress = request.META.get('REMOTE_ADDR')
get_ip = IpAddress()
get_ip.user = request.user
get_ip.ip = ipaddress
user = authenticate(username=username, password=password, ip=ipaddress)
get_ip.user.save()#
login(request, user)
return render(request, 'bloggo/Dashboard.html', context)
return render(request, 'bloggo/Login_form.html', {'form': form})