Pass the current user id of another model before saving to associate that model with the current user, in Python

I am trying to pass the current user or registered user id in the vehicle_user field in a car model. I have created a custom user and have to link the car to the current user before adding the vehicle.

vehicle /forms.py

class VehicleCreationForm(forms.Form):

    WHEELER_TYPE = (
        ('T','Two Wheeler'),
        ('F','Four Wheeler')
    )
    Wheeler_Type = forms.ChoiceField(choices=WHEELER_TYPE)
    Company = forms.CharField(max_length=30)
    Model = forms.CharField(max_length=30)
    reg_id=forms.CharField(max_length=15)
    Color=forms.CharField(max_length=15)
    vehicle_user = CustomUser()
    v = vehicle_user.current_user()

    def save(self, commit=True):
        data = self.cleaned_data
        users = Vehicle( vehicle_type=data['Wheeler_Type'],company=data['Company'],
        model=data['Model'],Reg_id=data['reg_id'].upper(),color=data['Color'], vehicle_user='v')
        users.save()        

      

cars / models.py

class Vehicle(models.Model): 

    u_id = models.AutoField(primary_key=True, null=False) 

    WHEELER_TYPE = (
        ('T','Two Wheeler'),
        ('F','Four Wheeler')
    )


    vehicle_type = models.CharField(max_length=1, choices=WHEELER_TYPE)
    company = models.CharField(max_length=30)
    model = models.CharField(max_length=30)
    Reg_id = models.CharField(max_length=12, unique=True)
    color = models.CharField(max_length=30)

    vehicle_user=models.ForeignKey(CustomUser)

    def __unicode__(self):
        return self.Reg_id

      

cars / views.py

def create_vehicle(request):
    if request.method == 'POST':
        form = VehicleCreationForm(request.POST, request.FILES)
        if form.is_valid():
            save_it = form.save(commit=False)
            save_it.id = request.id
            save_it.save()
            return HttpResponse("Vehicle Added")
    else:
        form = VehicleCreationForm()
        variables = RequestContext(request, {
        'form': form
        })
    return render_to_response(
    'create_vehicle.html',
    variables,
    )

      

Custom User Model: CustomUser / models.py

class CustomUser(AbstractBaseUser, PermissionsMixin):
    alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message = 'Only alphanumeric numbers are allowed.')

    """
    A fully featured customuser model
    Email and Password are required.

    """

    username = models.CharField(unique=True, max_length=20, validators=[alphanumeric])
    email = models.EmailField(verbose_name='email address', unique='True', max_length=255)
    first_name = models.CharField(max_length=30, null=True)
    last_name = models.CharField(max_length=50, null=True)
    date_joined = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True, null=False)
    is_staff = models.BooleanField(default=False, null=False)

    ###Our Own Models
    mobile_no = models.CharField(max_length=10, unique=True)
    state = models.CharField(max_length=30)
    city = models.CharField(max_length=30)


    objects = AuthUserManager()
    USERNAME_FIELD = 'mobile_no'
    REQUIRED_FIELDS = ['username', 'email']


    def current_user(request):
        current_user = request.id
        return current_user

    def get_full_name(self):
        fullname = self.first_name+" "+self.last_name
        return fullname

    def get_short_name(self):
        return self.username

    def __unicode__(self):
        return self.email

      

CustomUser / view.py

def login_user(request):
    state="Log in here"
    mobile_no=password=''

    if request.POST:
        #request.session.set_test_cookie()
        mobile_no = request.POST.get('mobile_no')
        password = request.POST.get('password')
        user = authenticate(mobile_no=mobile_no, password=password)

    if user is not None:
        if user.is_active:
            login(request, user)
            #form = VehicleCreationForm(request.POST)
            #uv_id = CustomUser.objects.filter(mobile_no=mobile_no)
            return HttpResponseRedirect('/user/%s/' % mobile_no)

            '''return render_to_response(
            'home.html',
            { 'user': request.user }
            )'''

        else:
            state="Your account is not active, please contact the site"
    else:
        state = "Your mobile no and/or password were incorrect."

    return render_to_response('login.html',{'state':state, 'mobile_no': mobile_no},context_instance=RequestContext(request))

      

+3


source to share


1 answer


enter image description here

Edit after screenshot:

What are you trying to do here? Are you trying to provide request.user with a form?

If it might seem like you haven't told Django about your basic auth_user model loading. Have you set the AUTH_USER_MODEL parameter to a custom user model?

Create your form by supplying an initial user instance, as you would when creating a form in a view.



form = VehicleCreationForm(initial={'vehicle_user': CustomUser()'''any CustomUser instance eg. request.user}''')

      

By the way, I don't understand how you should set the attribute of an object before creating it.

EDIT:

If you want to set the ForeignKey value to vehicle_user

, then specify it as:

form = VehicleCreationForm(initial={'vehicle_user': request.user.id})

      

+1


source







All Articles