Skip to content Skip to sidebar Skip to footer

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"