Python 3.x 名称错误:名称';接触值';未在serializers.py中定义

Python 3.x 名称错误:名称';接触值';未在serializers.py中定义,python-3.x,django,Python 3.x,Django,我学习了关于Django REST框架的教程,现在我正在尝试将所学知识应用到我的数据库中。stacktrace的最后一部分是: ... File "C:\Python\Python39\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen

我学习了关于Django REST框架的教程,现在我正在尝试将所学知识应用到我的数据库中。stacktrace的最后一部分是:

  ...
  File "C:\Python\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "C:\Users\jmr\projects\python\django-ref-impl\django_ref_impl\parties\urls.py", line 30, in <module>
    from . import views
  File "C:\Users\jmr\projects\python\django-ref-impl\django_ref_impl\parties\views.py", line 49, in <module>
    from .serializers import (
  File "C:\Users\jmr\projects\python\django-ref-impl\django_ref_impl\parties\serializers.py", line 52, in <module>
    class ContactMethodSerializer(serializers.ModelSerializer):
  File "C:\Users\jmr\projects\python\django-ref-impl\django_ref_impl\parties\serializers.py", line 54, in ContactMethodSerializer
    class Meta:
  File "C:\Users\jmr\projects\python\django-ref-impl\django_ref_impl\parties\serializers.py", line 59, in Meta
    contact_value,
NameError: name 'contact_value' is not defined
出现错误的字段contact_value位于列表的第一位。Mymodels.py定义了接触值

#
# TABLE: CONTACT_METHOD (COME)
#
class ContactMethod(models.Model):
    # attributes:
    contact_value = models.CharField(db_column = 'CONTACT_VALUE', max_length = 255, null=True, blank=True, verbose_name = 'Contact Value')
    effective_period_from = models.DateTimeField(db_column = 'EFFECTIVE_PERIOD_FROM', null=True, blank=True, verbose_name = 'Effective Period From')
    effective_period_to = models.DateTimeField(db_column = 'EFFECTIVE_PERIOD_TO', null=True, blank=True, verbose_name = 'Effective Period To')
    extension_number = models.CharField(db_column = 'EXTENSION_NUMBER', max_length = 255, null=True, blank=True, verbose_name = 'Extension Number')
    notes = models.TextField(db_column = 'NOTES', max_length = 1000, null=True, blank=True, verbose_name = 'Notes')
    created_at = models.DateTimeField(db_column = 'CREATED_AT', verbose_name = 'Created At', editable = False, auto_now_add=True)
    created_by = models.CharField(db_column = 'CREATED_BY', max_length = 255, verbose_name = 'Created By', editable = False)
    updated_at = models.DateTimeField(db_column = 'UPDATED_AT', verbose_name = 'Updated At', editable = False, auto_now=True)
    updated_by = models.CharField(db_column = 'UPDATED_BY', max_length = 255, verbose_name = 'Updated By', editable = False)

    # primary & foreign keys:
    id = models.BigAutoField(db_column = 'ID', primary_key = True)
    # COME_REF_CMTY_FK: ref CONTACT_METHOD_TYPE 
    contact_method_type_id = models.ForeignKey(ContactMethodTypeLv, on_delete = models.DO_NOTHING, db_column = 'CONTACT_METHOD_TYPE_ID', verbose_name = 'Contact Method Type')

    def __str__(self):
        return f'contact_value={self.contact_value} | effective_period_from={self.effective_period_from} | effective_period_to={self.effective_period_to} | extension_number={self.extension_number} | notes={self.notes} | id={self.id} | contact_method_type_id={self.contact_method_type_id} | created_at={self.created_at} | created_by={self.created_by} | updated_at={self.updated_at} | updated_by={self.updated_by}'

    class Meta:
        #abstract = True
        managed = False
        db_table = 'CONTACT_METHOD'
        verbose_name = 'Contact Method'
        verbose_name_plural = 'Contact Methods'
        ordering = (
            'id',
            )
$pip列表返回:

Package             Version
------------------- -------
asgiref             3.3.1
cx-Oracle           8.1.0
Django              3.1.4
django-appconf      1.0.4
djangorestframework 3.12.2
Pillow              8.1.0
pip                 20.3.3
pytz                2020.5
setuptools          49.2.1
six                 1.15.0
sqlparse            0.4.1

因此,很难从中理解为什么没有定义接触值。我缺少什么?

字段是按名称指定的,因此是字符串,而不是标识符,因为这些标识符确实不在范围内:

class ContactMethodSerializer(serializers.ModelSerializer):

    class Meta:
        # the model for Serializer
        model = ContactMethod
        # field names for serialization
        fields = (
        #   ↓             ↓ string literal
            'contact_value',
            'effective_period_from',
            'effective_period_to',
            'extension_number',
            'notes',
            'id',
            'contact_method_type_id',
            'created_at',
            'created_by',
            'updated_at',
            'updated_by'
        )
类ContactMethodSerializer(serializers.ModelSerializer):
类元:
#序列化程序的模型
模型=接触法
#用于序列化的字段名
字段=(
#&downarrow;&downarrow;字符串文字
“接触值”,
“有效期自”,
“有效期至”,
“分机号”,
“注意事项”,
“id”,
“联系人\方法\类型\ id”,
“创建于”,
“创建人”,
“更新地址”,
“更新人”

)
谢谢!碰巧我通过使用
“all”
解决了这个问题,但仍然没有与字符串的需要联系起来——Python新手。
class ContactMethodSerializer(serializers.ModelSerializer):

    class Meta:
        # the model for Serializer
        model = ContactMethod
        # field names for serialization
        fields = (
        #   ↓             ↓ string literal
            'contact_value',
            'effective_period_from',
            'effective_period_to',
            'extension_number',
            'notes',
            'id',
            'contact_method_type_id',
            'created_at',
            'created_by',
            'updated_at',
            'updated_by'
        )