#django #django-models #django-views
Вопрос:
#user/application mdodels.py
class ShowProfilePageView(DetailView):
model=User
template_name="users/profile.html"
paginate_by = 5
def get_context_data(self, *args, **kwargs):
users=User.objects.all()
nested_posts = {}
context = super(ShowProfilePageView,self).get_context_data(*args, **kwargs)
page_user = get_object_or_404(User, id=self.kwargs['pk'])
context['page_user'] = page_user
return context
#post model
class Posts(models.Model):
choices1 = Category.objects.all().values_list('name','name')
choice_list=[]
for item in choices1:
choice_list.append(item)
default2="Words are powerful, and, when used well, they can"
default1= "Words are powerful, and, when used well, they can incite people to both good and evil. While everyone has the right to say whatever he or she wants, those with influence over wants, those with influence over wants, those with influence over and thats"
category = models.CharField(max_length =30, choices = choice_list, default=choice_list[1])
title= models.CharField(default=default2, max_length=50)
content= models.TextField(max_length=2555,default=default1)
data_posted =models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
header_image = models.ImageField(null=True, default ="default.jpg", upload_to="images/")
snippet = models.TextField(default=default2, max_length=255)
likes = models.ManyToManyField(User, related_name='blogpost_like')
def number_of_likes(self):
return self.likes.count()
def __str__(self):
return self.title
def save(self, *args, **kwargs):
super(Posts, self).save(*args, **kwargs)
header_image= Image.open(self.header_image.path)
if header_image.height > 300 or header_image.width > 300:
output_size = (500,300 )
header_image.thumbnail(output_size)
header_image.save(self.header_image.path)
@property
def number_of_comments(self):
return BlogComment.objects.filter(blogpost_connected=self).count()
def get_absolute_url(self):
return reverse ('home')
Я могу получить id
, но не posts
то, что связано с этим id
. то, что я могу получить, — это имя пользователя, описание профиля и изображение профиля. class Posts
он отвечает за сбор информации и хранение сообщений. Я хотел бы иметь возможность вызывать сообщения, чтобы ShowProfilePageView
я мог показывать как User
информацию, так и сообщения, связанные с этим пользователем. В настоящее время я могу называть User
информацию, но не сообщения, связанные с пользователем
#tempalte Profile.html
<div class="content-section">
<div class="media">
<img class="rounded-circle account-img" src="{{ page_user.profile.image.url }}">
<div class="media-body">
<h2 class="account-heading">{{ page_user }}</h2>
<h3 class="text-secondary">{{ page_user.profile.profile_description }}</h3>
</div>
</div>
Комментарии:
1. можете ли вы добавить модели?
2. конечно! надеюсь, то, что я добавил, поможет
Ответ №1:
Я нашел ответ. Я уверен, что есть миллион способов сделать это, но, похоже, это сработало.
#from users.models
class ShowProfilePageView(DetailView):
model=User
template_name="users/profile.html"
paginate_by = 5
def get_context_data(self, *args, **kwargs):
users=User.objects.all()
nested_posts = {}
context = super(ShowProfilePageView,self).get_context_data(*args, **kwargs)
page_user = get_object_or_404(User, id=self.kwargs['pk'])
context['page_user'] = page_user
posts=Posts.objects.filter(author=page_user).order_by('-data_posted')
context['posts'] = posts
return context