python - Django:相关字段查找无效:用户
问题描述
我想根据用户主键查找练习数据。因此,当我打开 url: localhost:8080/api/practice-filter?user=1 时,它将基于 id 为 1 的用户输出所有练习数据。
模型.py
class Practice(models.Model):
practice_id = models.BigAutoField(primary_key=True)
user = models.ForeignKey('User', models.DO_NOTHING, default=None)
score = models.SmallIntegerField(null=True)
class Meta:
managed = True
db_table = 'practice'
def __str__(self):
return str(self.practice_id)
class User(models.Model):
user_id = models.BigAutoField(primary_key=True)
fullname = models.CharField(max_length=50)
email = models.CharField(max_length=100)
password = models.TextField()
class Meta:
managed = True
db_table = 'user'
def __str__(self):
return self.fullname
视图.py
@api_view(['GET'])
def practice_filter(request):
if request.method == 'GET':
exercises = Practice.objects.all()
user = request.GET.get('user', None)
if user is not None:
practice_filtered = exercises.filter(user__user__icontains=user)
exercises_serializer = PracticeSerializer(practice_filtered, many=True)
return JsonResponse(exercises_serializer.data, safe=False)
但是当我运行上面的代码时,我得到一个错误:
相关字段查找无效:用户
如何解决这个错误?我不知道该怎么办。我仍然是初学者,需要很多指导。请帮忙。谢谢你。
解决方案
您可以使用__
.
user
但在用户模型中没有调用字段。
如果要按用户的全名过滤,可以这样做:
practice_filtered = exercises.filter(user__fullname__icontains=user)
推荐阅读
- facebook - 如何在 Facebook 测验应用上实现分享结果按钮?
- flask - 烧瓶棉花糖不加载关系数据
- python - 如何编辑 Discord 频道名称 (discord.py)
- npm - 在 Windows 10 上安装 jupyterlab-latex 会导致 nmp 依赖失败,Anaconda
- google-apps-script - 尝试使用 Google Apps 脚本插入新用户时出错
- python - sklearn RFE with GaussianProcessClassifier
- python - 如何使用 Python 让机器人在时间到时自动打开 Zoom 会议并进入课堂?
- r - 将用户输入从闪亮发送到源 R 脚本
- flutter - Flutter如何重建小部件
- java - 运行桌面应用程序时出现 java.lang.VerifyError