Новый для Джанго.Я пытаюсь разработать модуль Feedback, но проектирование структуры базы данных приводит меня в замешательство по разным причинам:
Где мне нужно хранить feedback_score (положительный /нейтральный / отрицательный коэффициент обратной связи), должен ли он быть помещен в пользовательский пользователь или куда-то еще?
Как получить получателя учетных данных обратной связи, если он будет передан по URL, каксвязать получателя с FeedbackModel в представлениях на основе классов?
Как рассчитать feedback_score каждый раз для каждого пользователя?
models.py
User = get_user_model()
# Create your models here.
class FeedbackModel(models.Model):
id = models.AutoField(primary_key=False, db_column='id')
sender = models.ForeignKey(
User,
on_delete=models.CASCADE,
primary_key=False, related_name='feedback_left_by')
# recipient = models.ForeignKey(
# User,
# on_delete=models.CASCADE,
# primary_key=True)
FEEDBACK_OPTION = (
(-1, 'Negative'),
(0, 'Neutral'),
(+1, 'Good'),
)
feedback = models.IntegerField(choices=FEEDBACK_OPTION)
opinion = models.CharField(max_length=255)
class Meta:
ordering = ['left_by', '-id']
urls.py
from django.urls import path
from . import views
app_name = 'feedback'
urlpatterns = [
path('leave_feedback/<str:left_to>/',
views.leave_feedback.as_view(), name='leavefeedback'),
]
views.py
from django.shortcuts import render, reverse
from django.views.generic import TemplateView, CreateView
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from .models import FeedbackModel
decorators = [login_required]
@method_decorator(decorators, name='dispatch')
class leave_feedback(CreateView):
model = FeedbackModel
fields = ['feedback', 'opinion']
success_url = '/'
#template_name = "feedback/leave_feedback.html"
def form_valid(self, form):
form.instance.sender = self.request.user
# ?
return super().form_valid(form)
пользовательский пользователь
class User(AbstractUser):
(...)
@property
def feedback_score(self)
return ???