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 [email protected].
To post to this group, send email to [email protected].
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.