Как я могу оценить и оставить отзыв об услугах врача?
Я пытаюсь дать оценку и отзыв для услуги врача, и эта оценка будет исходить от пациента, что означает, что у меня есть два типа пользователей, поэтому как может быть вид
my models.py
class User(AbstractUser):
is_doctor = models.BooleanField(default=False)
is_patient = models.BooleanField(default=False)
class Doctor(models.Model):
user = models.OneToOneField(
User, on_delete=models.CASCADE, primary_key=True)
number_phone = models.CharField(
_('االهاتف :'), max_length=50, blank=True, null=True)
last_login = models.DateTimeField(auto_now_add=True, null=True)
class Patient(models.Model):
user = models.OneToOneField(
User, on_delete=models.CASCADE, primary_key=True)
name = models.CharField(max_length=50, verbose_name="الاسم ")
last_login = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s' % (self.user.username)
class Comments(models.Model):
created_by = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='comment')
# co_email = models.ForeignKey(
# User, on_delete=models.CASCADE, related_name='comment')
co_body = models.TextField(max_length=400, verbose_name='التعليق')
rate = models.IntegerField(default=0)
created_dt = models.DateTimeField(auto_now_add=True)
active = models.BooleanField(default=True)
post = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='comments')
def __str__(self):
return 'علق {} على {}'.format(self.created_by.username, self.post)
forms.py
class Commentair(forms.ModelForm):
co_body = forms.CharField(widget=forms.Textarea(
attrs={'rows': 3, 'placeholder': 'ما هو تعليقك عل الدكتور ؟'}), label='التعليق')
class Meta:
model = Comments
fields = ('co_body','rate')
html
Мне интересно, как можно сделать так, чтобы просмотр обрабатывал рейтинг звезд и отзывы. если есть какая-либо помощь, пожалуйста, напишите это ниже и объясните это, пожалуйста, и спасибо
Я бы сначала внес некоторые изменения. Позже, если вам не понравятся радиокнопки, вы всегда сможете отредактировать их с помощью css.
models.py (созданный и активный blank=True, поэтому передавать значения не нужно)
class Comments(models.Model):
created_by = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='comment')
# co_email = models.ForeignKey(
# User, on_delete=models.CASCADE, related_name='comment')
co_body = models.TextField(max_length=400, verbose_name='التعليق')
rate = models.IntegerField(default=0)
created_dt = models.DateTimeField(auto_now_add=True, blank=True)
active = models.BooleanField(default=True, blank=True)
post = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='comments')
def __str__(self):
return 'علق {} على {}'.format(self.created_by.username, self.post)
forms.py (я бы добавил радиокнопки в форму)
class Commentair(forms.ModelForm):
CHOICES = [
(1, 'Option 1'),
(2, 'Option 2'),
(3, 'Option 3'),
(4, 'Option 4'),
(5, 'Option 5'),
]
co_body = forms.CharField(widget=forms.Textarea(
attrs={'rows': 3, 'placeholder': 'ما هو تعليقك عل الدكتور ؟'}), label='التعليق')
rate = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES,)
class Meta:
model = Comments
fields = ('co_body','rate')
# This part is becuase you have to pass logged user
def __init__(self, *args, **kwargs):
self._user = kwargs.pop('user')
super(Commentair, self).__init__(*args, **kwargs)
def save(self, commit=True):
inst = super(Commentair, self).save(commit=False)
inst.user = self._user
if commit:
inst.save()
self.save_m2m()
return inst
views.py
def rate_page(request):
if request.method == 'POST':
form = Commentair(request.POST, user=request.user)
if form.is_valid():
form.save()
# form is saved.
# return what ever you like (other page, message, etc.)
form = Commentair(user=request.user)
return render(request, tmpl_name, {'form': form}