我有一個模型字段回報用戶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_name
和user__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')
我真的不明白這行:'USER_ID = User.objects.all()'。 'user_id'意味着**一個**用戶,但是您將所有用戶分配給它。 – creimers
@creimers我已經對這個問題做了一些修改,所以你可以理解那行是用於測試目的的,所以我可以使用某種數據填充我的表,問題仍然存在 – PetarP
我仍然認爲你的整個'get_queryset'方法沒有多大意義。你在追求什麼,一個用戶? – creimers