AttributeError: объект 'Doctor' не имеет атрибута 'comments'
Я работаю над этим проектом, но у меня возникла следующая ошибка comm = doctor_detail.comments.filter(active=True) AttributeError: у объекта 'Doctor' нет атрибута 'comments', однако я думаю, что все в порядке
вот мой models.py
class Comments(models.Model):
co_name = models.CharField(max_length=50, verbose_name="الاسم ")
co_email = models.EmailField(
max_length=50, verbose_name="البريد الالكتروني")
co_body = models.TextField(max_length=400, verbose_name='التعليق')
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.co_name, self.post)
вот мой views.py
def doctor_detail(request, slug):
# استدعاء جميع البينات اللي في البروفايل
doctor_detail = get_object_or_404(Doctor, slug=slug)
comm = doctor_detail.comments.filter(active=True)
form = Commentair()
if request.method == 'POST':
form = Commentair(data=request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.post = doctor_detail
new_comment.save()
form = Commentair()
else:
form = Commentair()
return render(request, 'user/doctor_detail.html', {'doctor_detail': doctor_detail,
'comm': comm,'form': form
})
Я действительно не знаю, почему я столкнулся с этой ошибкой, потому что связанное имя доступно и я думаю, что все в порядке .Пожалуйста, если есть ответ на это напишите его и объясните мне. спасибо
Исходя из предоставленного вами кода, похоже, что атрибут comments
, к которому вы пытаетесь получить доступ, определен в модели User
, а не в модели Doctor
. Вы пытаетесь получить доступ к нему через объект Doctor
, поэтому и возникает ошибка.
Чтобы исправить это, вам нужно получить доступ к атрибуту comments
через объект User
. Если вы хотите получить объект User
, который связан с объектом Doctor
, вы можете использовать атрибут user
объекта Doctor
. Например, вы можете заменить эту строку:
comm = doctor_detail.comments.filter(active=True)
с этой строкой:
comm = doctor_detail.user.comments.filter(active=True)
### You done mistake in here comments -> Comments c will be capital in filter
def doctor_detail(request, slug):
# استدعاء جميع البينات اللي في البروفايل
doctor_detail = get_object_or_404(Doctor, slug=slug)
comm = doctor_detail.Comments.filter(active=True)
form = Commentair()
if request.method == 'POST':
form = Commentair(data=request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.post = doctor_detail
new_comment.save()
form = Commentair()
else:
form = Commentair()
return render(request, 'user/doctor_detail.html', {'doctor_detail': doctor_detail,
'comm': comm,'form': form
})