【问题标题】:Django : Related Field got invalid lookup: userDjango:相关字段查找无效:​​用户
【发布时间】:2021-08-05 22:58:17
【问题描述】:

我想根据用户主键查找练习数据。 因此,当我打开 url: localhost:8080/api/practice-filter?user=1 时,它将根据 id 为 1 的用户输出所有练习数据。

model.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

view.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)

但是当我运行上面的代码时,我得到一个错误:

相关字段查找无效:​​用户

如何解决这个错误? 我不知道该怎么办。 我仍然是初学者,需要很多指导。 请帮忙。 谢谢。

【问题讨论】:

    标签: python django django-models django-views


    【解决方案1】:

    您可以使用__ 浏览外键字段。

    User 模型中没有名为 user 的字段。

    如果您想按用户的全名过滤,您可以这样做:

     practice_filtered = exercises.filter(user__fullname__icontains=user)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-15
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多