Я работаю над приложением панели управления, в котором пользователи могут создавать членства и входить в систему на серверах, связанных с этим членством (входы не являются учетными записями пользователей django, это отдельный и независимый объект).
Я бы хотелхотел бы ограничить список имен для входа, возвращаемых клиентским API-интерфейсом jjascript rest Framework django, на основе внешнего ключа, связывающего имя входа с таблицей элементов.
Кажется, что я должен использовать параметры запроса, но я неконечно, как передать параметр запроса в javascript api.
Вот код javascript, с которым я сейчас работаю:
var auth = new coreapi.auth.SessionAuthentication({
csrfCookieName: 'csrftoken',
csrfHeaderName: 'X-CSRFToken'
})
var client = new coreapi.Client({auth: auth});
let action = ["login", "list"];
client.action(schema, action, params).then(function(result) {
console.log(result);
});
Как мне передать api javascript для передачи: member_id =5 к этому запросу?
Со стороны django:
models.py (упрощенно):
class Member(models.Model):
name = models.CharField(max_length=64)
disk_quota = models.PositiveIntegerField(default=50000000000)
class Login(models.Model):
member = models.ForeignKey(Member, on_delete=models.CASCADE)
username = models.CharField(max_length=254)
password = models.CharField(max_length=64, blank=True)
serializers.py:
class MemberSerializer(serializers.ModelSerializer):
class Meta:
model = Member
fields = '__all__'
class LoginSerializer(serializers.ModelSerializer):
class Meta:
model = Login
fields = '__all__'
urls.py
router = routers.DefaultRouter()
router.register(r'member', views.ApiMemberViewSet, base_name = 'Member')
router.register(r'login', views.ApiLoginViewSet, base_name = 'Login')
urlpatterns = [
path('api/docs/', include_docs_urls(title='Petal API service')),
path('api/schema/', get_schema_view(title='Pastebin API')),
path('api/', include(router.urls)),
}
views.py:
class ApiLoginViewSet(viewsets.ModelViewSet):
serializer_class = LoginSerializer
def get_queryset(self):
return Login.objects.filter(member=request.query_params['member_id'])