Django.fun

where puting ForeignKey in django?

one of the questions that came to my mind is that in a many-to-one relationship in Django, where should the foreign key be located? I mean, it should be in many or in part one?

For example, we have two classes, post and comment: in this case, where should the ForeignKey be located in the comment or post class?

post model :

class post(models.model):
    created_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ManyToManyField("PostCategory", blank=True)
    caption = models.CharField(max_length=2000)

comment model :

class Comment(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
          verbose_name=_('user'), on_delete=models.CASCADE)
    text = models.TextField()
    

Now here is the comment field where the foreign key should be defined?

Foreign key must be used on the "Many" side of the Many-to-one relationships.

In your question, you have Post and Comment models. Since each post can have many comments, you should put a foreign key into your Comment model.

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)

Tutorials

Современный Python: начинаем проект с pyenv и poetry

Настройка проекта Python — виртуальные среды и управление пакетами

Использование requests в Python — тайм-ауты, повторы, хуки

Понимание декораторов в Python

ProcessPoolExecutor в Python: полное руководство

map() против submit() с ProcessPoolExecutor в Python

Понимание атрибутов, словарей и слотов в Python

Полное руководство по slice в Python

Выпуск Django 4.0

Безопасное развертывание приложения Django с помощью Gunicorn, Nginx и HTTPS

Автоматический повтор невыполненных задач Celery

Django REST Framework и Elasticsearch

Докеризация Django с помощью Postgres, Gunicorn и Nginx

Асинхронные задачи с Django и Celery

Релизы безопасности Django: 3.2.4, 3.1.12 и 2.2.24

Выпуски исправлений ошибок Django: 3.2.3, 3.1.11 и 2.2.23

Эффективное использование сериализаторов Django REST Framework

Выпуски безопасности Django: 3.2.2, 3.1.10 и 2.2.22

Выпущенные релизы безопасности Django: 3.2.1, 3.1.9 и 2.2.21

Обработка периодических задач в Django с помощью Celery и Docker

View all tutorials →