【问题标题】:Deny to access to id of user in Foreignkey model拒绝访问外键模型中的用户ID
【发布时间】:2021-12-30 13:41:44
【问题描述】:
        --WHY I CANT TO ACCESS TO ID OF USER AND PRODUCT WITH user__id and product__id?
        i have error: (The view store.views.submit_review didn't return an HttpResponse object. It returned None instead).
        <pre><code>
    i define some code for rating post for any user user
        --#views
        def submit_review(request, product_id):
            url = request.META.get('HTTP_REFERER')
            if request.method == 'POST':
                try:
                    reviews = ReviewRating.objects.get(user__id=request.user.id,Product__id=product_id) #my problem is here
                    form = Reviewform(request.POST, instance=reviews)
                    form.save()
                    messages.success(request, 'Thank you!your review has been updated.')
                    return redirect(url)
                except ReviewRating.DoesNotExist:
                    form = Reviewform(request.POST)
                    if form.is_valid():
                        data = ReviewRating()
                        data.subject = form.cleaned_data['subject']
                        data.review = form.cleaned_data['review']
                        data.rating = form.cleaned_data['rating']
                        data.ip = request.META.get['REMOTE_ADDR']
                        data.product_id = product_id
                        data.user_id = request.user.id
                        data.save()
                        messages.success(request, 'Thank you! Your review has been submitted')
                        return redirect(url)
        </code></pre>

这部分我定义了模型。我检查了这部分它工作正常


define model for views in my app
#models
class ReviewRating(models.Model):
Product = models.ForeignKey(product, on_delete=models.CASCADE)
user = models.ForeignKey(Account, on_delete=models.CASCADE)
subject = models.CharField(max_length=100, blank=True)
review = models.TextField(max_length=500, blank=True)
rating = models.FloatField()
ip = models.CharField(max_length=20, blank=True)
status = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
            def __str__(self):
                return self.subject

this part i define url #urls define path for html and views urlpatterns = [ path('submit_review/int:product_id/',views.submit_review,name='submit_review') ]

【问题讨论】:

  • 能否提供Account模型??

标签: python-3.x django django-models django-views


【解决方案1】:

您的模型不清楚。如果您至少可以共享完整的 model.py 文件会更好 如果您通过 models.pyserializers.pyviews.py 提供服务目标,我想我将能够提供更多帮助具体

到目前为止,我在 url 部分发现的一个问题是您需要在 int:product_id 上添加 。 应该是,

urlpatterns = [
path('submit_review/<int:product_id>/',views.submit_review,name='submit_review')
]

【讨论】:

  • 是的,它是正确的:path('submit_review//',views.submit_review,name='submit_review')
  • 当我写我的帖子时,它改变了
  • 我的问题是为什么我无法使用 this(__id) 获取外键模型中的对象
  • 使用外键意味着,您正在继承该特定领域的另一个模型。首先,您需要创建该模型。然后,您可以使用外键将该模型的特征继承到另一个模型中。这意味着您需要使用字段“id”创建一个名为“Product”的模型。然后您可以从那里获取产品ID。我希望我已经消除了你的困惑。
猜你喜欢
  • 2015-01-16
  • 2012-05-19
  • 1970-01-01
  • 2018-11-28
  • 2016-04-25
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多