2017-04-05 52 views
0

我有一個模型字段回報用戶ID的Django

account_handler = models.ForeignKey(User, blank=True, null=True, related_name='handling_leads', on_delete=models.SET_NULL) 

目前我正在做這樣的事情

def get_queryset(self): 
    user_id = User.objects.all() 
    queryset = User.objects.filter(handling_leads__account_handler=user_id).distinct() 
    return queryset 

,我已經有了一些成果用於測試目的。現在的問題是,我該如何正確使用該字段並返回user_id?我試過這樣的東西

User.objects.filter(handling_leads__account_handler=self.request.user.id).distinct() 

與出User.objects.all()但這只是返回一個空的查詢集。我試圖過濾這個,所以我可以用user__first_nameuser__last_name來填充表格,我需要user_id,所以我可以將它們重定向到它們的單個頁面。

控制器在數據表:

app = angular.module 'statistics' 

app.controller 'SalesCommissionsListCtrl', ['$scope', '$compile', 
    ($scope, $compile) -> 
    $scope.init =()-> 
     fetchCommissionsList() 

    fetchCommissionsList =()-> 
     $('#commissionsSalesList').DataTable({ 
     createdRow: (row, data, index) -> 
      $compile(row)($scope) 
     sDom: 'lftip', 
     processing: true, 
     serverSide:true, 
     searchDelay: 1000, 
     orderMulti: false, 
     pageLength: 10, 
     ajax: { 
      url: '/api/statistics/commissions/list/', 
      data: (data)-> 
      data.limit = data.length; 
      data.offset = data.start; 
      data.search = data.search['value']; 
      if (data.order[0]['dir'] == 'asc') 
       data.ordering = data.columns[data.order[0]['column']].name; 
      else 
       data.ordering = '-' + data.columns[data.order[0]['column']].name; 
      return 0 
      dataFilter: (data) -> 
      json = jQuery.parseJSON(data); 
      json.recordsTotal = json.count; 
      json.recordsFiltered = json.count; 
      json.data = json.results; 
      return JSON.stringify(json); 
     } 
     columns: [ 
      { 
      data: "username", 
      name: "username__first_name, username__last_name", 
      render: (data, type, row, meta)-> 
       return '<a href="/statistics/commissions/sales/' + row.user_id + '">' + data + '</a>'; 
      } 
     ] 
     }) 
] 

ModelViewSet

from django.contrib.auth.models import User 
from rest_framework import viewsets, filters, permissions 

from app.restapi.pagination import StandardResultsOffsetPagination 
from statistics.restapi.serializers import SalesCommissionsSerializer 
from statistics.restapi.permissions import SalesCommissionsListPermissions 


class SalesCommissionsViewSet(viewsets.ModelViewSet): 
    def get_queryset(self): 
     user_id = User.objects.all() 
     queryset = User.objects.filter(handling_leads__account_handler=user_id).distinct() 
     return queryset 

    serializer_class = SalesCommissionsSerializer 

    filter_backends = (filters.DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter) 

    filter_fields = (
     'id', 'username', 'first_name', 'last_name' 
    ) 

    ordering_fields = (
     'id', 'username', 'first_name', 'last_name', 
    ) 

    search_fields = (
     'id', 'username', 'first_name', 'last_name', 
    ) 

    pagination_class = StandardResultsOffsetPagination 

    permission_classes = [permissions.IsAuthenticated, SalesCommissionsListPermissions] 

串行:

from django.contrib.auth.models import User 
from rest_framework import serializers 


class SalesCommissionsSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('id', 'username', 'first_name', 'last_name') 
+0

我真的不明白這行:'USER_ID = User.objects.all()'。 'user_id'意味着**一個**用戶,但是您將所有用戶分配給它。 – creimers

+0

@creimers我已經對這個問題做了一些修改,所以你可以理解那行是用於測試目的的,所以我可以使用某種數據填充我的表,問題仍然存在 – PetarP

+0

我仍然認爲你的整個'get_queryset'方法沒有多大意義。你在追求什麼,一個用戶? – creimers

回答

相關問題