Я хочу создать модель задачи и модель пользователя. И я хочу, чтобы каждая задача могла быть связана с тремя пользователями. Каждая задача должна быть связана с пользователем-создателем, пользователем-правопреемником и пользователем-верификатором. И я хочу иметь только одну пользовательскую таблицу. Я предпочитаю иметь в таблице задач три внешних ключа: Creator_id, Assignee_id и Verifier_id. Это правильный способ сделать это? Как мне смоделировать это в Django?
ОБНОВЛЕНИЕ
Вот мои упрощенные модели
class User(models.Model):
id = models.CharField(primary_key=True, max_length=100)
name = models.CharField(max_length=100)
class Task(models.Model):
id = models.CharField(primary_key=True, max_length=100)
title = models.CharField(max_length=100)
creator = models.ForeignKey('User', on_delete=models.DO_NOTHING, related_name='creator_tasks')
assignee = models.ForeignKey('User', on_delete=models.DO_NOTHING, related_name='user_tasks')
verifier = models.ForeignKey('User', on_delete=models.DO_NOTHING, related_name='verifier_tasks')
И вот ошибка, которую я получаю, когда связываю пользователя с задачей как создателя и пытаюсь получить создателя задачи:
$ python manage.py shell
>>> from todoapp.models import User
>>> from todoapp.models import Task
>>> user = User.objects.get(id='1')
>>> task = Task.objects.get(id='1')
>>> task.creator_id = user.id
>>> task.save()
>>> task.creator
Traceback (most recent call last):
File "", line 1, in
File "/Users/josh/.venv/myenv/lib/python3.9/site-packages/django/db/models/fields/related_descriptors.py", line 188, in __get__
raise self.RelatedObjectDoesNotExist(
todoapp.models.Task.creator.RelatedObjectDoesNotExist: Task has no creator.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ationships