Django - Logged In User Not Populating In Admin.py
I’m trying to create a form to when the current logged in user makes a submission the user column in admin.py gets populated with the logged in user. My problem: The user column
Solution 1:
Try this
forms.py
import os
from django import forms
from django.formsimportModelFormfrom django.formsimport widgets
from django.utilsimport six
from django.utils.safestringimport mark_safe
from django.utils.translationimport ugettext_lazy as _
from django.template.defaultfiltersimport filesizeformat
from avatar.confimport settings
from avatar.modelsimportAvatarfrom .modelsimportListingclassHomeForm(forms.ModelForm):
classMeta:
model = Listing
fields = ('name', 'address', 'zip_code', 'mobile_number', 'cc_number', 'cc_number', 'cc_expiration', 'cc_cvv')
Add in models file
classListingManager(models.Manager):defsave_from_object(self, request, obj):
obj.user = request.user
obj.save()
Add Update your Listing Model with objects
as new manager
class Listing (models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True)
created = models.DateTimeField(auto_now_add=True, null=True)
updated = models.DateTimeField(auto_now=True)
name = models.CharField(max_length=100)
address = models.CharField(max_length=100)
zip_code = models.CharField(max_length=100)
mobile_number = models.CharField(max_length=100)
cc_number = models.CharField(max_length=100)
cc_expiration = models.CharField(max_length=100)
cc_cvv = models.CharField(max_length=100)
objects = ListingManager()
This should work, Also I am not sure about your idea of keeping user as OneToOneField (This will not allow having multiple records with same user instance), I think you need to change it to ForeignKey. Refer What's the difference between django OneToOneField and ForeignKey?
Post a Comment for "Django - Logged In User Not Populating In Admin.py"