Как сделать функциональность добавления новых друзей, отклонения и удаления друзей в моем пользовательском приложении, используя django?

Я хочу добавить такие функции, как Добавить друга, Отправить запрос на друга, Принять запрос на друга в мой Django сайт

models.py

from django.db import models
from django.contrib.auth.models import User
from PIL import Image

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    
    def __str__(self):
        return f'{self.user.username} Profile'
    
    def save(self, *args, **kwargs):
            super().save(*args,**kwargs)

            img = Image.open(self.image.path)

            if img.height > 300 or img.width > 300:
                output_size = (300, 300)
                img.thumbnail(output_size)
                img.save(self.image.path)
    

views.py

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(
                request, f'Your account has been created! You are now able to log in')
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})


@login_required
def profile(request):
    if request.method == 'POST':
        u_form = UserUpdateForm(request.POST, instance=request.user)
        p_form = ProfileUpdateForm(request.POST,
                                   request.FILES,
                                   instance=request.user.profile)
        if u_form.is_valid() and p_form.is_valid():
            u_form.save()
            p_form.save()
            messages.success(request, f'Your account has been updated!')
            return redirect('profile')

    else:
        u_form = UserUpdateForm(instance=request.user)
        p_form = ProfileUpdateForm(instance=request.user.profile)

    context = {
        'u_form': u_form,
        'p_form': p_form
    }

    return render(request, 'users/profile.html', context)

пожалуйста, помогите мне добавить функциональность запроса друзей в мой проект, так как я новичок в Django, помогите мне, как я должен действовать с этим кодом, чтобы добавить упомянутые функции в мой проект.

Есть пакет под названием django-friendship.

Он позволяет создавать и управлять фолловерами, блоками и двунаправленной дружбой между пользователями. Его возможности:

Объекты запроса дружбы, которые могут быть приняты, отклонены, отменены или помечены как просмотренные.

Крючки для легкого составления списка всех запросов на дружбу, отправленных или полученных данным пользователем, отфильтрованных по статусу запроса.

Блокирующий список для каждого пользователя пользователей, которых он заблокировал.

Теги для включения информации о дружбе, блоках и фолловерах в ваши шаблоны.

Интеграция с AUTH_USER_MODEL.Валидация для предотвращения распространенных ошибок.Более быстрое время ответа сервера благодаря кэшированию

https://github.com/revsys/django-friendship

Вернуться на верх