簡體   English   中英

Django 'NoneType' 對象沒有屬性 'filter'

[英]Django 'NoneType' object has no attribute 'filter'

任務:一次為模型分配一個用戶。

錯誤:

Django 'NoneType' 對象沒有屬性 'filter'

models.py

class Post(models.Model):
    post_tag = models.ForeignKey(ProjectUser, related_name="user_tag", blank=True, null=True,on_delete=models.CASCADE)

其中ProjectUser是:

from django.contrib.auth.models import AbstractUser

class ProjectUser(AbstractUser):

    def __str__(self):
        return self.username

.html代碼是:

% for post_user in objects %}
<form method='POST' action="{% url 'a_tag' post_user.id %}">
    {% csrf_token %}
    <input type='hidden'>
    {% if post_user.id in assigned_user %}
        <button type='submit'>Cancel</button>
    {% else %}
        <button type='submit'>Start</button>
    {% endif %}
</form>

urls.py

path('<int:tag>', views.tag_analyst, name='a_tag'),

views.py函數是<- Filter ,在這里addremove屬性會導致錯誤

def tag_analyst(request, tag):
    post = get_object_or_404(Post, id=tag)

    if request.method == 'POST':
        if post.post_tag.filter(id=request.user.id).exists():
            post.post_tag.remove(request.user)

        else:
            post.post_tag.add(request.user)

    return HttpResponseRedirect(reverse('homepage'))

views.py 類

class View(LoginRequiredMixin, ListView):
    context_object_name = "objects"
    model = Post
    template_name = "page.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['assigned_user'] = self.request.user.user_tag.values_list('id', flat=True)
        return context

post_tagPostForeignKey字段,因此post.post_tag是一個對象(或在這種情況下為None ),但不是Manager 所以你不能filter()

您可以檢查if post.post_tag 如果用戶關聯,則為True否則為False ( None )。

class Question(models.Model):
webregister = models.ForeignKey(Webregister, on_delete=models.CASCADE)
que = models.CharField(max_length=255,null=True, blank=True)

    def __str__(self):
        return str(self.pk)


orgs = Question.objects.filter(webregister=module,que__isnull=True)
orgs.delete()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM