我需要獲取試圖創(chuàng)建評(píng)論以存儲(chǔ)在模型中的用戶的 profile_id。我可以獲取用戶的屬性,因?yàn)樗鼈儍?nèi)置在 django 中,但是當(dāng)我嘗試使用下面的內(nèi)容來獲取 profile_id 時(shí),我得到“prof is not defined”錯(cuò)誤。views.py class ReviewCreateView(LoginRequiredMixin, CreateView): model = Review fields = ['rating', 'reviewtext'] def get_context_data(self, **kwargs): context = super(ReviewCreateView, self).get_context_data(**kwargs) context['prof'] = Profile.objects.values_list('id', flat=True).filter(user_id=self.request.user.id) return context def form_valid(self, form): form.instance.product = self.request.GET.get('pk') form.instance.author = self.request.user form.instance.profile = prof return super().form_valid(form)models.pyclass Profile(models.Model): user = models.OneToOneField(User, on_delete = models.CASCADE)class Review(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE) profile = models.ForeignKey(Profile, on_delete=models.CASCADE) author = models.ForeignKey(User, on_delete=models.CASCADE) rating = models.PositiveSmallIntegerField(default=1, validators = [MinValueValidator(1), MaxValueValidator(5)]) reviewtext = models.TextField()class Product(models.Model): name = models.CharField(max_length=100)
1 回答

江戶川亂折騰
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
配置文件通過外鍵鏈接到用戶,所以我可以寫下面的行,product_id 也得到一個(gè)空約束,直到我添加了 self.kwargs 行。
def form_valid(self, form, **kwargs): form.instance.product_id = self.kwargs['pk'] form.instance.author = self.request.user form.instance.profile = self.request.user.profile return super().form_valid(form)
添加回答
舉報(bào)
0/150
提交
取消