📝 Django

related_name в Django

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
83
🌿
Уровень
Средний
🐦 💼 ✈️

related_name — имя для обратного доступа от связанной модели к родительской.

class Task(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
# Обратный доступ — Django генерирует имя автоматически: <model>_set
project = Project.objects.get(pk=1)
project.task_set.all()  # все задачи проекта
class Task(models.Model):
    project = models.ForeignKey(
        Project,
        on_delete=models.CASCADE,
        related_name='tasks',  # project.tasks вместо project.task_set
    )
project.tasks.all()
project.tasks.filter(status='done')
project.tasks.count()

Пример с несколькими ForeignKey на одну модель

class Task(models.Model):
    owner = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        related_name='owned_tasks',    # user.owned_tasks.all()
    )
    assignee = models.ForeignKey(
        User,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='assigned_tasks', # user.assigned_tasks.all()
    )

Без related_name Django выдаст ошибку: конфликт имён.

created_by = models.ForeignKey(
    User,
    on_delete=models.CASCADE,
    related_name='+',  # нет обратного доступа
)

В шаблоне

{% for task in project.tasks.all %}
  <li>{{ task.title }}</li>
{% endfor %}

В сериализаторе DRF

class ProjectSerializer(serializers.ModelSerializer):
    tasks = TaskSerializer(many=True, read_only=True)  # через related_name

    class Meta:
        model = Project
        fields = ['id', 'name', 'tasks']

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 138
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 91
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 79

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!