Сгенерируйте ключ и сохраните его в Model Django Rest Framework. - PullRequest
0 голосов
/ 25 октября 2018

models.py

from django.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()

class = SecretKey(models.Model):
   key = models.CharField(max_length=50, unique = True)
   owner = models.ForeignKey(UserProfile, on_delete = models.CASCADE)

views.py

from .serializers import UserProfileSerializer, KeySerializer
from rest_framework.response import Response
from .models import UserProfile, SecretKey
from rest_framework import viewsets

class ProfileAPIView(viewsets.ModelViewSet):

    serializer_class = UserProfileSerializer
    queryset = UserProfile.objects.all()

class GenerateSecretKeyAPIView(viewsets.ModelViewSet):
    serializer_class = KeySerializer
    queryset = SecretKey.objects.all()

serializers.py

class KeySerializer(serializers.ModelSerializer):
class Meta:
    model = SecretKey
    fields = ('key','owner')

urls.py

from django.urls import path
from rest_framework import routers
from .views import ProfileAPIView, GenerateSecretKeyAPIView

router = routers.DefaultRouter()

router.register('stud',StudentProfileAPIView,base_name='stud-prof-api-view'),
router.register('key',GenerateSecretKeyAPIView,base_name='key-gen-api-view'),
urlpatterns = router.urls

Это краткое описание моего API.Теперь, когда я вызываю запрос POST из внешнего интерфейса, который содержит номер (n) и идентификатор владельца, я хочу создать случайное число длины n и сохранить ключ в поле key иидентификатор владельца в owner поле SecretKey модели

Пожалуйста, помогите Спасибо заранее

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, вы можете сделать что-то вроде этого:

class = SecretKey(models.Model):
    key = models.CharField(max_length=50, unique = True)
    owner = models.ForeignKey(UserProfile, on_delete = models.CASCADE)

    def generate_key(self):
        key = ''.join(random.choice('0123456789') for x in range(8))

        if SecretKey.objects.filter(key=key).exists():
            return self.generate_key()

        return key

    def save(self, *args, **kwargs):
        if not self.key:
            self.key = self.generate_key()

        return super(SecretKey, self).save(*args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...