Рекомендации по настройке моделей для приложения Django для социальных сетей

Я работаю над проектом персональной социальной сети. У каждого пользователя есть профиль.

--Профильная модель--

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')
background_image = models.ImageField(upload_to='profile_background_pics', blank=True, null=True,)
bio = models.CharField(max_length=200, help_text="200 characters or less")

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

Пример псевдокода...:

@testuser - 
Tech Stacks model - 
{ Programming Languages: [Python (Intermediate), Java (Noob)],
  Frontend: [HTML (Intermediate), CSS (Intermediate), JS (Intermediate)], 
  Frameworks: [Django (Getting there..)], 
  Devops: [AWS (Noob), Heroku (Noob)],
  and so on...
  

Итак, каждый профиль (поскольку профиль имеет OneToOne с contrib.auth.user) будет иметь модель технического стека. Модель технологического стека будет иметь несколько категорий (языки, фреймворки и т.д.). Каждая категория имеет несколько объектов. И каждый объект будет иметь уровень мастерства пользователя.

Итак, если я запрошу user.tech_stacks, то он должен вернуть что-то вроде вышеприведенного. А user.tech_stacks.programming_languages должен вернуть [Python (Intermediate), Java (Noob)],

Я также должен быть в состоянии запросить всех пользователей, которые являются Python (Intermediate) и Python (Advanced)

Спасибо за помощь... не совсем понимаю, с чего начать.

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