поле доступа к модели в сериализаторе - PullRequest
0 голосов
/ 06 ноября 2018

ключ и данные - это словарь, как я могу получить доступ к данным конкретного ключа django admin в сериализаторе

 class Setting(models.Model):
      key = models.CharField(max_length=255, primary_key=True)
      data = JSONField(null=True, blank=True)

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

работа с этим кодом

        ssh_instance = Setting.objects.get(key='ssh-port')
        print(ssh_instance.data["value"])
0 голосов
/ 06 ноября 2018

В сериализаторе, что-то вроде этого

from rest_framework import serializers
from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES


class SettingsSerializer(serializers.ModelSerializer):
    sample_filed = serializers.SerializerMethodField()

    class Meta:
        model = Settings
        fields = ('key', 'data', 'sample_filed')

     def get_sample_field(self):
        """ a sample field function to demonstrate srialzer method"""
        """ you can access all keys here as self.key "
         return self.key + self.data

Примечание: - При использовании сериализатора модели вам просто нужно указать модель. тогда restframework будет обрабатывать все общие вещи. Вы можете использовать serializer methodfield (), если вам нужно дополнительное поле в ответе. там вы можете использовать ключ, как указано выше

(или) вы можете использовать django -orm

Вы можете использовать запросы django orm вне сериализатора.

чтобы получить определенную строку Settings.objects.get(key = 'key-value') (только если ключ уникален. Это приведет к исключению, если значение отсутствует)

(или)

Settings.objects.filter(key = 'key-value') (рекомендуется. Даст вам все результаты.)

Settings.objects.all() выдаст вам все записи

Settings.objects.filter(key = 'sdaf', data = 'sds') Специальные записи с ключом и данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...