'JobSerializer' 对象没有属性 'email' 我缺少什么?
'JobSerializer' object has no attribute 'email' what i am missing?
serializers.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,其中包含了'email'。我知道我错过了一些非常清楚的东西,但花了几个小时才意识到 :) 所以任何帮助都会得到帮助
我试图仅向拥有 'job' 的用户显示 'applicants',但我无法将 'email' 从序列化程序传递到视图。我无法将任何属性从序列化程序传递到数据字典。
如 documentation of DRF 所示,序列化对象后,您可以通过 data
属性访问其字段。所以它看起来像 serializer.data['email']
.
还有一个额外提示,请考虑使用 Django 快捷方式 get_object_or_404() 而不是 try/except
块。祝你好运!
serializers.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,其中包含了'email'。我知道我错过了一些非常清楚的东西,但花了几个小时才意识到 :) 所以任何帮助都会得到帮助 我试图仅向拥有 'job' 的用户显示 'applicants',但我无法将 'email' 从序列化程序传递到视图。我无法将任何属性从序列化程序传递到数据字典。
如 documentation of DRF 所示,序列化对象后,您可以通过 data
属性访问其字段。所以它看起来像 serializer.data['email']
.
还有一个额外提示,请考虑使用 Django 快捷方式 get_object_or_404() 而不是 try/except
块。祝你好运!