Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 序列化程序中的访问模型字段_Python_Django_Django Rest Framework - Fatal编程技术网

Python 序列化程序中的访问模型字段

Python 序列化程序中的访问模型字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,键和数据是如何在序列化程序中访问特定键的数据的字典 class Setting(models.Model): key = models.CharField(max_length=255, primary_key=True) data = JSONField(null=True, blank=True) 在序列化程序中,类似于 from rest_framework import serializers from snippets.models import Snipp

键和数据是如何在序列化程序中访问特定键的数据的字典

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

在序列化程序中,类似于

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')
(仅当key唯一时。如果没有值,这将引发异常)

(或)

Settings.objects.filter(key='key-value')
(重新编译。将提供所有结果。)

Settings.objects.all()
将提供所有记录


Settings.objects.filter(key='sdaf',data='sds')
带有key和data的特定记录。

在序列化程序中,类似这样

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')
(仅当key唯一时。如果没有值,这将引发异常)

(或)

Settings.objects.filter(key='key-value')
(重新编译。将提供所有结果。)

Settings.objects.all()
将提供所有记录

Settings.objects.filter(key='sdaf',data='sds')
带有key和data的特定记录。

使用此代码

        ssh_instance = Setting.objects.get(key='ssh-port')
        print(ssh_instance.data["value"])
使用此代码

        ssh_instance = Setting.objects.get(key='ssh-port')
        print(ssh_instance.data["value"])

显示序列化程序代码。实际上,您发布的模型是我想要访问序列化程序类中的键和数据的巨大代码显示您的序列化程序代码。实际上,您发布的Now模型是我想要访问序列化程序类中的密钥和数据的大量代码。如果我打印(Setting.objects.filter(key='ssh-port'))返回yes,您将得到result=result。它是列表格式的。假设x=Setting.objects.filter(key='ssh-port')。然后x[0]将给出第一条记录。如果有许多记录,那么您必须迭代它们。并打印(Setting.object.all())返回所有keyYes。同样,它将是一个列表。如果你发现这个答案能解决问题,你需要迭代。如果我打印(Setting.objects.filter(key='ssh-port'))返回yes,您可以接受@mehranmotmainno吗?返回yes,您的结果为result=result。它是列表格式的。假设x=Setting.objects.filter(key='ssh-port')。然后x[0]将给出第一条记录。如果有许多记录,那么您必须迭代它们。并打印(Setting.object.all())返回所有keyYes。同样,它将是一个列表。如果你发现这个答案能解决问题,你需要迭代。你能接受吗@Mehranmotmen