ValueError: Поле 'id' ожидало число, но получило 'super'. [04 / Apr / 2020 18:15:11] "GET / super_user HTTP / 1.1" 500 132224 - PullRequest
2 голосов
/ 04 апреля 2020

Мой проект позволяет пользователю написать сообщение, и у каждого сообщения есть категория, и у каждой категории есть руководитель, поэтому я столкнулся с проблемой, я не могу получить все сообщения для указанной c категории указанной c руководитель.

Мои модели

class PostCategory(models.Model):
    name = models.CharField(max_length=150, null=True)
    description = models.CharField(max_length=100, null=True)

    def __str__(self):
        return self.name

class UserSupervisorSpecialist(models.Model):
    user = models.ForeignKey(User, related_name="user_id", on_delete=models.SET_NULL, null=True)
    category = models.OneToOneField(CategoryPost, related_name="category_id", on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return self.user.username

class Post(models.Model):
    title = models.CharField(max_length=100, null=True)
    content = RichTextField()
    post_category = models.ManyToManyField(CategoryPost)
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    date_create = models.DateTimeField(auto_now_add=True, null=True)
    status = models.BooleanField(default=False) #0 -> suspend
    likes = models.IntegerField(default=0) #0 -> No like yet
    supervisor = models.ForeignKey(UserSupervisorSpecialist, on_delete=models.SET_NULL, null=True)

    def __str__(self):
        return self.title

    def snippet(self):
        return self.content[:150]

Мои просмотры:

def control_spanle(request):
    category = UserSupervisorSpecialist.objects.filter(user=request.user)
    post_filter = Post.objects.filter(supervisor=request.user.username)
    return render(request, 'supervisor/controle_panel.html',{'Category':category,'post_filter':post_filter})

1 Ответ

2 голосов
/ 04 апреля 2020

Вы написали набор запросов для модели Post без указания поля, сравнивая его со строкой.

Вы можете решить эту проблему, изменив эту строку

post_filter = Post.objects.filter(supervisor=request.user.username)

на:

post_filter = Post.objects.filter(supervisor__name=request.user.username)
...