I am trying to build a feedback application for the teachers by the
students. I have a proxy User that will the student. But I am not able to
assign the user to the feedback model. I am a newbie. Please help.
Thanks and regards,
Saloni

*models.py:*

class User(auth.models.User, auth.models.PermissionsMixin):

    def __str__(self):
        return self.username

class Teacher(models.Model):
    teacher_name = models.CharField(blank=False, max_length=100,
unique=True, null=False)

    def __str__(self):
        return self.teacher_name

class Subject(models.Model):
    subject_name = models.CharField(blank=False, max_length=100,
unique=True, null=False)

    def __str__(self):
        return self.subject_name

class Feedback(models.Model):
    user = models.ForeignKey(User, related_name = 'feedback',
on_delete=models.CASCADE, blank=False, null=False)
    teacher = models.ForeignKey(Teacher, related_name = 'feedback',
on_delete=models.CASCADE, blank=False, null=False)
    subject = models.ForeignKey(Subject, related_name = 'feedback',
on_delete=models.CASCADE, blank=False, null=False)
    param1 = models.PositiveIntegerField(blank=False, null=False)
    param2 = models.PositiveIntegerField(blank=False, null=False)
    param3 = models.PositiveIntegerField(blank=False, null=False)
    param4 = models.PositiveIntegerField(blank=False, null=False)
    param5 = models.PositiveIntegerField(blank=False, null=False)
    param6 = models.PositiveIntegerField(blank=False, null=False)
    param7 = models.PositiveIntegerField(blank=False, null=False)
    param8 = models.PositiveIntegerField(blank=False, null=False)
    param9 = models.PositiveIntegerField(blank=False, null=False)
    param10 = models.PositiveIntegerField(blank=False, null=False)

    def get_absolute_url(self):
        return reverse(
            "feedback:detail",
            kwargs={"username": self.user.username, "pk": self.pk})

    def __str__(self):
        return (self.username + "->" + self.teacher)

    class Meta:
        ordering = ["teacher"]
        unique_together = ["user", "teacher", "subject"]


*forms.py:*

class FeedbackForm(forms.ModelForm):
    class Meta:
        fields = ("teacher", "subject", "param1", "param2", "param3",
"param4",
                    "param5", "param6", "param7", "param8", "param9",
"param10")
        model = models.Feedback

    def __init__(self, *args, **kwargs):
        user = kwargs.pop("user", None)
        super().__init__(*args, **kwargs)


*CreateView:*

class CreateFeedback(LoginRequiredMixin, SelectRelatedMixin,
generic.CreateView):
    form_class = FeedbackForm
    model = models.Feedback

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return super().form_valid(form)


*Path in urls.py:*

path('by/<username>/new',views.CreateFeedback.as_view(),name='create'),


*Error:*

ValueError at /feedback/by/feedback/new Cannot assign "<SimpleLazyObject:
<User: feedback>>": "Feedback.user" must be a "User" instance.


*Repository:*
https://github.com/salonikalra/feedback

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAMO5YAoOKgjQjQ0QBu%2Bx_GHSTkEZs2JreGc6NCXqtYLxQHrBBg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to