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
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:
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+unsubscribe@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.
No comments:
Post a Comment