我正在使用drf-nested-routers的Django Rest Framework应用创建API。此应用程序是用户具有会话和任务的跟踪器。每个用户可以有三个活动任务,并且可以在给定会话中处理每个任务。
我的(缩写)模型是:
#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:
#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'.
但真正有趣的是,如果我删除“任务”并只包含会话,它会将所有内容序列化,并为我提供用户各种会话的嵌套视图。
我在这里不知所措并希望得到任何帮助。
答案 0 :(得分:1)
我和我的妻子一起偷看它并找出了我的问题。
我有' related_name ="会话"'在models.py中的用户的ForeignKey字段中。
我在任务模型的ForeignKey字段中缺少该信息。
希望其他人偶然发现这一点并从错误中吸取教训。