Я не совсем понимаю ваш вопрос, но для моделей, поддерживающих ваши требования: Обратите внимание, что я использую Client
, а не User
, потому что User - это модель по умолчанию для django, которую вы также можете использовать, и она весьма полезна.для обработки логинов и сеансов Проверьте это здесь
from django.db import models
class Client(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
...
class Movie(models.Model):
movie_name = models.CharField(max_length=30)
...
class Rating(models.Model):
user = models.ForeignKey(Client, on_delete=models.CASCADE )
movie = models.ForeignKey(Movie, on_delete=models.CASCADE )
rate = models.IntegerField(default=0)
Имея модели, вам нужно добавить форму в home.html
.. это означает
- Добавление нового пути к вашему
url.py
- Создание функции для получения и сохранения данных в вашем
views.py
- Добавьте входные данные формы в ваш
home.html
Я публикую простой код, но вы должны организовать его для обработки исключений и завершения по вашему желанию.
url.py
(...),
# must have the <int:user> to receive the pk of the user
path('^home/<int:user>/rating/$', views.rating, namespace='rating'),
views.py
def rating(request, user):
base_context = {'request': request}
if (request.method == 'POST'):
# access to the POST data, as you want N movies, you could name them movieX with X been a number, you should do a loop here to iterate. Im making a one case only
movie = int(request.POST['movie1'])
rating = request.POST['rating1']
# Check if rating exists
try:
r = Rating.objects.get(user.pk=user, movie.pk=movie)
except:
r = Rating()
r.rating = int(rating)
r.save()
return redirect('appname:home')
home.html
Это простая форма , смотрите здесь