Модели и связи в Django
Помогите, пожалуйста, разобраться. Я создаю учебный проект в Django. У меня должно быть три модели со связями: Language, Category, SubCategory. В схематическом виде это выглядело бы так:
- Category: полнофункциональные
- SubCategory: объектно-ориентированный
- Language: Python
- Language: C#
- Language: <...>
- SubCategory: мультипарадигмальный
- Language: Python
- Language: Rust
- Language: <...>
- SubCategory: стуктурный
- SubCategory: <...>
- SubCategory: объектно-ориентированный
- Category: неполнофункциональные
- SubCategory: языки СУБД
- SubCategory: SQL
- Language: PL/SQL
- SubCategory: <...>
- Category: <...>
- SubCategory: <...>
- Language: <...>
- SubCategory: <...>
- Category: <...>
- SubCategory: <...>
- Language: <...>
- SubCategory: <...>
В models.py я создала такие модели: Language со связью ManyToMany(SubCategory), SubCategory со связью ForeignKey(Category), Category. Я подразумеваю, что у любого языка может быть множество subcategory, но только одна category. Правильно ли я реализовала связи? Я не понимаю как мне теперь получить по названию языка SubCategory. Файл models.py
from django.db import models
from django.urls import reverse
class Language(models.Model):
title = models.CharField(max_length=255)
content = models.TextField(blank=True)
icon = models.ImageField(upload_to="media/")
category = models.ManyToManyField('SubCategory', blank=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('descriptions_idx', kwargs={'idx': self.pk})
class Category(models.Model):
name = models.CharField(max_length=100, db_index=True)
def __str__(self):
return self.name
class SubCategory(models.Model):
name = models.CharField(max_length=100, db_index=True)
cat = models.ForeignKey('Category', on_delete=models.PROTECT, null=True)
def __str__(self):
return self.name