how can i update one model field and save that data into an other model

17 views
Skip to first unread message

kevin irankunda

unread,
Sep 6, 2019, 4:42:23 PM9/6/19
to Django users
Hi i'm Kevin and i'm new in python and django

i want if one between student suggestion and staff suggestion's status == "approved"
that data to be sent in appointment model

my models are:

statuses=[
    ('accepted','Approve'),
    ('denied','deny'),
    ('canceled','cancel'),

]

class studentsuggestion(models.Model):
    student = models.ForeignKey(student, default=None, on_delete=models.CASCADE)
    lecture = models.ForeignKey(staffs, on_delete=models.CASCADE)
    suggestion_date = models.DateField(default=None,blank=True)
    suggestion_hour = models.TimeField(default=None,null=True, blank=True)
    student_reason = models.TextField(max_length=1000, blank=True)
    status = models.CharField(max_length=9, default=None, choices=statuses, null=True, blank=True)
    suggested_date = models.DateTimeField(auto_now_add=True)

    objects = studentsuggstmanager()
    def __str__(self):
        return self.student.user.username
    def get_absolute_url(self):
        return reverse('suggestion_detail', kwargs = {'pk':self.pk})

class staffsuggestion(models.Model):
    auhtor = models.ForeignKey(staffs, related_name='stasuggestion', default=None, on_delete=models.CASCADE)
    studentsuggestion = models.ForeignKey(studentsuggestion, default=None, on_delete=models.CASCADE)
    suggestion_date = models.DateField(default=None,blank=True)
    suggestion_hour = models.TimeField(default=None,null=True, blank=True)
    end_time = models.TimeField(default=None,null=True, blank=True)
    staff_reason = models.TextField(max_length=1000, blank=True)
    status = models.CharField(max_length=9, default=None, choices=statuses, null=True, blank=True)
    suggested_date = models.DateTimeField(auto_now_add=True) 
    def __str__(self):
        return self.studentsuggestion

class appointment(models.Model):
    staffsuggestion = models.ForeignKey(staffsuggestion, default=None, null=True, on_delete=models.CASCADE)
    studentsuggestion = models.ForeignKey(studentsuggestion, default=None,null=True, on_delete=models.CASCADE)
    suggestion_date = models.DateField(default=None,blank=True)
    suggestion_hour = models.TimeField(default=None,null=True, blank=True)
    end_time = models.TimeField(default=None,null=True, blank=True)
    reason = models.TextField(max_length=1000)
    status = models.CharField(max_length=9, default=None, null=True, choices=statuses, blank=True)
    requested_date = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        if staffsuggestion is not None:
            return self.staffsuggestion
        else:
            return self.studentsuggestion

my views.py

class studentsuggestionreact(UpdateView):
    model = studentsuggestion
    template_name = 'auth/mine/reaction.html'
    fields = ['status']
    def form_valid(self, form):
        self.object = form.save(commit = False)
        if self.object.status == 'approve':
            studentsuggestion = self.object.student
            suggestion_date = self.object.suggestion_date
            suggestion_hour = self.object.suggestion_hour
            reason = self.object.student_reason
            status = self.object.status
            get_values = appointment.objects.get_or_create( studentsuggestion=studentsuggestion,
                                        suggestion_date=suggestion_date, suggestion_hour=suggestion_hour, reason=reason,
                                        status=status).save()
            get_values.save()
            self.object.save()
            return redirect("suggestion_list")
            
        elif self.object.status == 'canceled':
            self.object.save()
            return redirect("suggestion_list")
        
        elif self.object.status == 'denied':
            self.object.save()
            return redirect("suggestion_list")
Reply all
Reply to author
Forward
0 new messages