Пользователь статьи

Если для статей (новости, товары и др) надо указать пользователя, который добавил текущую статью, то используют параметр models.ForeignKey().

Для примера используется стандартная таблица «auth_user» (создаётся при настройки с базой данных).

# news/models.py
from django.db import models
from django.contrib.auth.models import User # импорт модели User

class News(models.Model):
    # …
    user = models.ForeignKey(User, on_delete=models.CASCADE)

Параметр ForeignKey создаёт не просто поле «user_id» в базе данных, но и связывает данное поле с таблицей «auth_user», т.е. указывать можно только тех пользователей, которые существуют в таблице «auth_user».

Например, это видно на скриншоте ниже (поле «user_id» в PHPMyAdmin, выбирать можно только ИД существующих пользователей).

Аналогичная ситуация с обновлением пользователя в админке Django (подключение админки Django).

Также, при удалении пользователя автоматически удалится всё, что связано с текущим пользователем (статьи, комментарии, т.е. те места, где используется параметр models.ForeignKey()).

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

Page.objects.filter(user=1)    # 1-ый способ
Page.objects.filter(user_id=1) # 2-ой способ

Вывести пользователя в шаблоне можно через следующий код:

{{page.user}}    <!-- admin -->
{{page.user_id}} <!-- 1 -->