Запретить доступ к идентификатору пользователя в модели Foreignkey
--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
В этой части я определяю url #urls Определите путь для html и представлений urlpatterns = [ path('submit_review/int:product_id/',views.submit_review,name='submit_review') ]
Ваша модель не ясна. Будет лучше, если вы хотя бы поделитесь полным файлом model.py Если вы предоставите цель вашего сервиса с models.py, serializers.py, views.py, я думаю, что смогу помочь более конкретно
до сих пор, одна проблема, которую я нашел в разделе url, это то, что вам нужно добавить < > на int:product_id. это должно быть,
urlpatterns = [
path('submit_review/<int:product_id>/',views.submit_review,name='submit_review')
]