0

Django Rest Frameworkのdrf-nested-routersアプリケーションを使用して API を作成しています。このアプリケーションは、ユーザーがセッションとタスクを持つトラッカーです。各ユーザーは 3 つのアクティブなタスクを持つことができ、特定のセッションでこれらの各タスクに取り組むことができます。

私の(省略された)モデルは次のとおりです。

#models.py
class User(models.Model):
    name = models.Charfield()

class Task(models.Model):
    start_date = models.Datefield()
    task_title = models.Charfield()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class Session(models.Model):
    session_date = models.Datefield()
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sessions')
    task_one = models.ForeignKey(related_name="task_one")
    task_one_attempts = models.IntegerField()
    task_two = models.ForeignKey(related_name="task_two")
    task_two_attempts = models.IntegerField()

これらのモデル用に、次の (省略形の) シリアライザーを作成しました。

#serializers.py
class TaskSerializer(serializers.ModelSerializer):
     user = serializers.StringRelatedField(many=False)

    class Meta:
        model = Task
        fields = ('start_date', 'task_title', 'user')

 class SessionSerializer(serializers.ModelSerializer):
      user = Serializers.StringRelatedField(many=False)

      class Meta:
           model = Session
           fields = ('session_date', 'user', 'task_one', 'task_one_attempts', 'task_two', 'task_two_attempts')

class UserSerializer(models.ModelSerializer):
    sessions = SessionSerializer(many=True)
    tasks = TaskSerializer(many=True)
    sessions = SessionSerializer(many=True)

    class Meta:
         model = Users
         fields = ('name', 'sessions', 'tasks')

また、ルーティングを適切に行うために、views.py と urls.py をセットアップしました。

セッションとタスクの API ビューに問題なく移動できます。ただし、ユーザー ビューに移動しようとすると、次のエラーがスローされます。

'User' object has no attribute 'tasks'.

しかし、本当に興味深いのは、「タスク」を削除してセッションのみを含めると、すべてが正常にシリアル化され、ユーザーのさまざまなセッションのネストされたビューが得られることです。

私はここで途方に暮れており、助けていただければ幸いです。

4

1 に答える 1