Итак, в основном у меня есть модель Friend, и в модели есть весь код, а затем в представлениях у меня также есть некоторый код для друзей, и я получаю эту ошибку
matching query does not exist.
Я перепробовал все решения, которые нашел в Интернете, однако ни одно из них не сработало, поэтому я пришел сюда, чтобы попытаться найти ответ.Используется последняя версия Django.
Соответствующий models.py
class Friend(models.Model):
users = models.ManyToManyField(User)
current_user = models.ForeignKey(User,related_name='owner',null=True,on_delete=models.CASCADE)
@classmethod
def make_friend(cls,current_user,new_friend):
friend,created = cls.objects.get_or_create(
current_user = current_user
)
friend.users.add(new_friend)
@classmethod
def lose_friend(cls,current_user,new_friend):
friend,created = cls.objects.get_or_create(
current_user = current_user
)
friend.users.remove(new_friend)
Это релевантный views.py Извините, если он немного длинный
class PostListView(SelectRelatedMixin,TagMixin,generic.ListView):
model = Post
template_name = 'mainapp/post_list.html'
selected_related = ("user","group")
queryset = models.Post.objects.all()
def get(self,request):
users = User.objects.exclude(id=request.user.id)
friend = Friend.objects.get(current_user=request.user)
friends = friend.users.all()
context = {
'users':users,'friends':friends
}
return render(request, self.template_name, context)
def get_context_data(self,**kwargs):
context = super(PostListView,self).get_context_data(**kwargs)
context['user_groups'] = Group.objects.filter(members__in=[self.request.user.id])
context['all_groups'] = Group.objects.all()
return context
def get_queryset(self):
return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
def change_friends(request,operation,pk):
friend = User.objects.get(pk=pk)
if operation == 'add':
Friend.make_friend(request.user,friend)
elif operation == 'remove':
Friend.lose_friend(request.user,friend)
return redirect('mainapp:post_list')
Таким образом, настоящая ошибка происходит в методе get()
со строкой friend = Friend.objects.get(current_user=request.user)
.
Вот файл urls.py.
#post list url
path('posts/',views.PostListView.as_view(),name='post_list'),
# connect url
path('connect/<operation>/<pk>',views.change_friends,name='change_friends'),
А вот соответствующий код в post_list.html
<p>People to connect with</p>
{% for user in users %}
<a href="#">
<p>{{ user.username }}</p>
</a>
{% if request.user.is_authenticated %}
<p>Friends</p>
{% for friend in friends %}
<a href="#">
<p>{{ friend.username }}</p>
</a>
{% endif %}
Я не уверен, почему я получаюэта ошибка, и все решения в Интернете не решили эту проблему.
Я не ожидаю ошибок, и пользователи и друзья будут работать должным образом, однако это не так, и я получаю эту ошибку.Спасибо за любую помощь, которую вы можете оказать:)