gpt4 book ai didi

django - 无法识别我的 serializers.py 文件中的问题

转载 作者:行者123 更新时间:2023-12-05 09:11:47 25 4
gpt4 key购买 nike

我不明白为什么会出现错误。如果我不导入 serializers.py 文件,则会出现错误(我的 View 尚未使用此文件)。

序列化程序.py:

from rest_framework import serializers

# This file is the equivilent of forms.py in that we define models to serialise.

class MerchantSerializer(serializers.Serializer):
id = serializers.CharField(required=True, max_length=50)
name = serializers.CharField(required=True, max_length=100)
logo = serializers.URLField(max_length=250, required=False)

class DataSerializer(serializers.Serializer):
account_id = serializers.CharField(required=True, max_length=50)
amount = serializers.IntegerField(required=True, min_value=0)
created = serializers.DateTimeField()
currency = serializers.CharField(required=True, max_length=3)
description = serializers.CharField(required=True, max_length=250)
id = serializers.CharField(required=True, max_length=50)
category = serializers.CharField(required=True, max_length=100)
is_load = serializers.BooleanField()
settled = serializers.DateTimeField()
merchant = serializers.ListField(child=MerchantSerializer)

class TransactionSerializer(serializers.Serializer):
type = serializers.CharField(required=True, max_length=50)
data = serializers.ListField(child=DataSerializer)

我的 View 还没有做任何事情。计划是只接收一些 JSON 来创建我的 webhook,验证 JSON,然后保存数据。 JSON 包含跨越多个模型的对象,并且字段名称与模型不匹配,所以我认为我不能使用任何模型序列化程序。

Views.py:

from django.shortcuts import render
from django.contrib.auth.models import User
from rest_framework import viewsets
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
import json
import datetime
from .models import Transaction
from .serializers import TransactionSerializer

#Enable logging
import logging
logger = logging.getLogger(__name__)

# Create your views here.

@csrf_exempt
def index(request):
data = json.loads(request.body)

return render(request, 'template.html', )

回溯:

python manage.py runserver 80
Watching for file changes with StatReloader
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\Users\philip\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "C:\Users\philip\AppData\Local\Programs\Python\Python38-32\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\management\commands\runserver.py", line 117, in inner_run
self.check(display_num_errors=True)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\management\base.py", line 392, in check
all_issues = self._run_checks(
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\management\base.py", line 382, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\checks\registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
return check_method()
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\urls\resolvers.py", line 407, in check
for pattern in self.url_patterns:
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\urls\resolvers.py", line 588, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\django\urls\resolvers.py", line 581, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Users\philip\AppData\Local\Programs\Python\Python38-32\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\philip\CodeRepos\MonzoWebHook\monzowebhook\urls.py", line 6, in <module>
import core.views
File "C:\Users\philip\CodeRepos\MonzoWebHook\core\views.py", line 9, in
<module>
from .serializers import TransactionSerializer
File "C:\Users\philip\CodeRepos\MonzoWebHook\core\serializers.py", line
10, in <module>
class DataSerializer(serializers.Serializer):
File "C:\Users\philip\CodeRepos\MonzoWebHook\core\serializers.py", line
20, in DataSerializer
merchant = serializers.ListField(child=MerchantSerializer)
File "C:\Users\philip\CodeRepos\MonzoWebHook\venv\lib\site-packages\rest_framework\fields.py", line 1646, in __init__
assert not inspect.isclass(self.child), '`child` has not been instantiated.'
AssertionError: `child` has not been instantiated.

最佳答案

设置childs后需要加上括号。

data = serializers.ListField(child=DataSerializer())

merchant = serializers.ListField(child=MerchantSerializer())

关于django - 无法识别我的 serializers.py 文件中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com