как изменить choiceField в django -rest-framework на основе предыдущего выбора - PullRequest
0 голосов
/ 28 мая 2020

У меня есть несколько ChoiceField в сериализаторах, но я хочу изменить следующие варианты выбора на основе ранее выбранных вариантов

from rest_framework import serializers


class SimpleEncyptDecryptSerializer(serializers.Serializer):
    """ This is simply for enryption and decryption of text
        without storing the data inside the DB  
    """
    ''' `text` [variable]: It could be plaintext or ciphertext '''
    text = serializers.CharField(max_length=225)
    ''' `encrypt_or_decrypt` [variable]: choose what exactly to do '''
    TASK_CHOICE = (
        ("ENCRYPTION", "ENCRYPTION"),
        ("DECRYPTION", "DECRYPTION"),
    )
    encrypt_or_decrypt = serializers.ChoiceField(choices=TASK_CHOICE)
    CRYPTOGRAPHIC_TYPE = (
        ("SYMMETRIC KEY", "SYMMETRIC KEY"),
        ("ASYMMETRIC KEY", "ASYMMETRIC KEY"),
        ("HASH FUNCTION", "HASH FUNCTION"),
    )
    crypt_type = serializers.ChoiceField(choices=CRYPTOGRAPHIC_TYPE)
    METHOD_CHOICE = (
        ('AES Cryptography', 'AES Cryptography'),
        #('RSA Cipher', 'RSA Cipher'),
        ('Rail Fence', 'Rail Fence'),
        ('Hill Cipher', 'Hill Cipher'),
        ('Rail Fence', 'Rail fence'),
        ('caesar Cipher', 'Ceasar Cipher'),
        ('Column Transpose Cipher', 'Column Transpose Cipher'),
    )
    method_choose = serializers.ChoiceField(choices=METHOD_CHOICE)
    key = serializers.IntegerField()

Если кто-то выберет «SYMMETRI C KEY», тогда будут только симметричные шифры. c -ключевой тип криптографии c алгоритмы ie в METHOD_CHOICE должны отображаться такие параметры, как AES, DES, RSA; если «ASYMMETRI C KEY», то параметры METHOD_CHOICE, такие как «Diff ie Hellman», «El Gamal» и т. д .; если «HA SH FUNCTION», то параметры METHOD_CHOICE должны быть «MD5», «MA C», «HMA C»

как должен быть изменен файл serializers.py, чтобы он появился с таким настраиваемым HTML_FORM при использовании APIView из django -rest-framework.

...