Нужен ли мне класс пользователя в моих моделях? Или есть простое решение для внешнего ключа?

Сделал некоторую модификацию в своем коде (там была какая-то ошибка), которая создала новую проблему. Выдается следующее сообщение об ошибке:

"вставка или обновление таблицы "main_productreview" нарушает ограничение внешнего ключа "main_productreview_user_id_bdd4771a_fk_main_user_id"" ПОДРОБНАЯ ИНФОРМАЦИЯ: Ключ (user_id)=(3) отсутствует в таблице "main_user"."

(Раньше у меня был класс User в моем models.py, который я удалил, так как зарегистрированные пользователи не перемещались в Main. Удаление класса устранило проблему, но создало эту)

Что я пытаюсь сделать: когда пользователь вошел в систему, он может оставить отзыв о конкретном товаре.

Есть идеи?

Models.py

from django.db import models
from django.contrib.auth.models import User
from decimal import Decimal
import locale
import logging   

    
class Product(models.Model):
    name = models.CharField('Product Name', max_length=120, null=True)
    description = models.TextField(blank=True, null=True)
    price = models.DecimalField(null=True, max_digits=6, decimal_places=3)
    #venue = models.ForeignKey(Venue, blank=True, related_name="venue", on_delete=models.CASCADE)
    tasters = models.ManyToManyField(User, blank=True)
    image_url= models.URLField('Image Web Address', blank=True)
    product_url = models.URLField('Product Web Address', blank=True)
    class Meta:
        db_table='Product'
    def __str__(self):
        return str(self.name)

RATING=(
    (1,'1'),
    (2,'2'),
    (3,'3'),
    (4,'4'),
    (5,'5'),
)
class ProductReview(models.Model):
    user=models.ForeignKey(User, on_delete=models.CASCADE)
    product=models.ForeignKey(Product,related_name="comments", on_delete=models.CASCADE)
    review_text=models.TextField(max_length=250)
    review_rating=models.IntegerField(choices=RATING,max_length=150, default=0)
    date_added = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '%s - %s - %s'%(self.user, self.product, self.date_added)

Views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import logout
from django.contrib import messages
from .models import Product, User, Venue, ProductReview
from .forms import DrinkForm, VenueForm, ReviewAdd
from django.core.paginator import Paginator
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404
from django.contrib.auth.models import User


#from flask import request

# Create your views here.



def product(request):
# product_list = Product.objects.all()
#set up pagination
    p = Paginator(Product.objects.all(), 20)
    page = request.GET.get('page')
    products = p.get_page(page)
    product_list = Product.objects.all().order_by('?')
    nums = "a"* products.paginator.num_pages
    return render(request,"main/products.html", {"product_list":product_list,"products":products, "nums":nums})


@login_required
def add_review(request, product_id):
    product = get_object_or_404(Product, pk=product_id)
    form = ReviewAdd(request.POST or None) #instance=product (populate field with existing information)
    if form.is_valid():
        new_rating = form.save(commit=False)
        new_rating.product = product
        new_rating.user = request.user
        new_rating.save()
        return redirect('product')
    return render(request, 'main/add_review.html',{'form':form})
Вернуться на верх