잡동사니

반응형

질문

모델이 비어 있는지 또는 블로그에 메시지를 표시하지 않는지 확인하려고합니다. 예를 들어 아직 게시물이없는 경우 "아직 게시물이 없습니다"라는 메시지를 표시하고 싶지만 표시하지 않습니다. 사용자가 로그인하고 모델이 비어있을 때 django에게 알리는 방법을 알고 있습니다. 여기에 코드가 있습니다.

class Post(models.Model):
    title = models.CharField(max_length= 255)
    header_image = models.ImageField(null = True, blank = True, upload_to = 'images/')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = RichTextField(blank = True, null = True)
    #body = models.TextField()
    post_date = models.DateField(auto_now_add=True)
    category = models.CharField(max_length=255, default='coding')
    snippet = models.CharField(max_length=255)
    likes = models.ManyToManyField(User, related_name = 'blog_posts')
class MyPostsView(ListView):
    model = Post
    template_name = 'app1/my_posts.html'
    
    def post_list(request):
        var = False
        exists = Post.body.filter(user=request.user).exists()
        if exists:
            var = True
        
        else:
            var = False
        
        context = {'var':var}
        return render(request, 'app1/my_posts.html', context)
{% extends "app1/base.html" %}
{% block body_block %}


<div class="container">
<h1>Post</h1>

{% for post in object_list %}
{% if user.is_authenticated %}
{% if user.id == post.author.id %}

    <li><a href="{% url 'app1:article-detail' post.pk %}">{{post.title}}</a> -
    {{post.author}} - <small>{{post.post_date}}</small> - <small> category : <a href="{% url 'app1:category' post.category|slugify %}">{{post.category}}</a> - </small>
    <small><a href="{% url 'app1:updatepost' post.pk %}">Edit</a></small><small>
    <a href="{% url 'app1:deletepost' post.pk %}">- Delete</a>  
    </small></li>
    {{post.snippet}}
    {% endif %}
    {% endif %}
    {% empty %}
    No Posts yet
    {% endfor %}

답변1

get_queryset (…) 메서드 [Django-doc] :

from django.contrib.auth.mixins import LoginRequiredMixin

class MyPostsView(LoginRequiredMixin, ListView):
    model = Post
    template_name = 'app1/my_posts.html'
    
    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(
            user=self.request.user
        )

그런 다음 템플릿에서 for… empty loop [Django-doc] :

{% for post in object_list %}
    {{ post.title }}
{% empty %}
    No posts yet!
{% endfor %}

참고 : class 기반보기로보기를 제한 할 수 있습니다. LoginRequiredMixin mixin [Django-doc] .


참고 : 일반적으로 settings.AUTH_USER_MODEL [Django-doc] 사용자 모델 [Django-doc] 직접. 자세한 내용은 Document의 사용자모델 섹션 참조 .



 

 

 

 

출처 : https://stackoverflow.com/questions/63306022/how-to-check-if-the-model-is-empty-for-the-current-logged-user

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band