【问题标题】:'JobSerializer' object has no attribute 'email' what i am missing?'JobSerializer' 对象没有属性 'email' 我缺少什么?
【发布时间】:2022-02-04 12:30:07
【问题描述】:

序列化器.py

class JobSerializer(serializers.ModelSerializer):
    # image = Base64ImageField(max_length=None, 
    #                         use_url=True)
    # applicant = serializers.ForeignKe
    applicant = serializers.StringRelatedField(many=True)
    email = serializers.SerializerMethodField("get_username_from_user")
    company_name = serializers.SerializerMethodField("get_company_name_from_user")
    class Meta:
        model = Jobs
        fields = ['company_name', 'email',  'title', 'desc', 'image', 'price',  'category', 'applicant']
        # extra_kwargs = {"email": {"required": False}}




    def get_username_from_user(self, jobs):
        email = jobs.user.email
        return email

    def get_company_name_from_user(self, jobs):
        company_name = jobs.user.company_name
        return company_name

views.py

@api_view(['GET'])
@permission_classes([IsAuthenticated])
def api_detail_jobs_view(request, id):
    try:
        jobs = Jobs.objects.get(id=id)
    except Jobs.DoesNotExist:
        data = {}
        data['response'] = "Job does not exist"
        return Response(data, status=status.HTTP_404_NOT_FOUND)

    
    if request.method == "GET":

        serializer = JobSerializer(jobs)
        user = request.user
        if user == serializer.email:
            data = {}
            auth_show = serializer
            data['title'] = auth_show.title 
            data['applicant'] = auth_show.applicant
            return Response(data)
        else:
            no_auth_show = serializer
            data = {}
            data['title'] = no_auth_show.title
            return Response(data)

这里是 serializers.py,其中包含“电子邮件”。我知道我遗漏了一些非常清楚的东西,但花了几个小时才意识到:)所以任何帮助都会得到帮助 我试图仅向拥有“工作”的用户显示“申请人”,但我无法将序列化程序中的“电子邮件”传递到视图中。我无法将序列化程序中的任何属性传递给数据字典。

【问题讨论】:

  • 抱歉 data['desc'] = auth_show.applicant 这一行。必须是:data['applicant'] = auth_show.applicant
  • Zurab,你可以也应该编辑你的帖子 :)
  • @NixonSparrow Done sir:) 我关于堆栈溢出的第一个问题。谢谢

标签: django django-rest-framework


【解决方案1】:

documentation of DRF 所示,序列化对象后,您可以通过data 属性访问其字段。所以它看起来像serializer.data['email']

还有一个额外的提示,考虑使用 Django 快捷方式 get_object_or_404() 而不是 try/except 块。祝你好运!

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2021-10-15
    • 2019-10-15
    • 1970-01-01
    相关资源
    最近更新 更多