我正在尝试创建一个 View 集,我想在其中过滤所有具有相同引用编号的记录。成员模型中有一个引用模型字段,但它告诉我它是一个无效字段。
这是 View 集:
from groups.models import Member
from ..serializers import MemberSerializer
from rest_framework import viewsets
class MemberViewSet(viewsets.ModelViewSet):
queryset = Member.objects.filter(field_name='reference')
serializer_class = MemberSerializer
这是模型:
class Member(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
reference = models.CharField(max_length=22)
balance = models.DecimalField(max_digits=12, decimal_places=2)
open_tabs = models.IntegerField()
created = models.DateTimeField(auto_now_add=True)
这是网址:
from groups.api.views.memberViews import MemberViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'', MemberViewSet, base_name='member')
urlpatterns = router.urls
所以我想过滤掉所有具有相同引用字段值的成员对象...
最佳答案
如果您希望成员
在您的 View 集中具有特定的reference
,您应该覆盖get_queryset
方法并将参数添加到url .
在 View 集中:
from groups.models import Member
from ..serializers import MemberSerializer
from rest_framework import viewsets
class MemberViewSet(viewsets.ModelViewSet):
serializer_class = MemberSerializer
def get_queryset(self):
reference = self.kwargs['reference']
return Member.objects.filter(reference=reference)
在 url 中:
from groups.api.views.memberViews import MemberViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'(?P<reference>[-\w]+)', MemberViewSet, base_name='member')
urlpatterns = router.urls
关于python - 字段名称选择 'reference' 不是有效选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56124662/