'how to fix AttributeError: 'RelatedManager' object has no attribute 'id'
I have two nested models (task and Proposal) with a foreign key relationship, i've followed every necessary step but i'm getting an inegrity error below is d err and codes
class JobPost(models.Model):
id= models.UUIDField(default=uuid.uuid4, primary_key=True,
editable=False)
user = models.ForeignKey(CustomUser, related_name='users',
on_delete=models.CASCADE)
title = models.CharField(max_length=255)
class Proposal(models.Model):
user = models.OneToOneField(CustomUser, related_name="user", on_delete=models.CASCADE)
id = models.UUIDField(default=uuid.uuid4, primary_key=True, editable=False)
task = models.ForeignKey(JobPost, on_delete=models.CASCADE, related_name='proposal')
Serializer
1st serializer
class JobSerializer(serializers.ModelSerializer):
user = serializers.CharField(source='user.username', read_only=True )
user_id = serializers.CharField(source='user.id', read_only=True)
proposals = ProposalSerializer(many=True, read_only=True)
class Meta:
model = JobPost
fields = [
'user',
'user_id',
'id',
'proposals',
'etc'
]
2nd Serializer
class ProposalSerializer(serializers.ModelSerializer):
user = serializers.CharField(source='user.username',read_only=True)
class Meta:
model = Proposal
fields = [
'id',
'proposal_description',
'duration',
'bid',
]
def create(self, validated_data, instance=None):
if 'task' in validated_data:
task = validated_data.pop('task')
else:
task = JobPost.objects.create(**validated_data)
user_proposal = Proposal.objects.update_or_create(
task = task, defaults=validated_data
)
return user_proposal
APIVIEW
class ProposalAPIView(generics.CreateAPIView):
serializer_class = ProposalSerializer
look_up = 'id',
queryset = Proposal.objects.all()
permissions_classes = [permissions.IsAuthenticated]
2nd APIView
class CreateJobPost(generics.CreateAPIView):
serializer_class = JobSerializer
permissions_classes = [permissions.IsAuthenticated]
err msg
task = CustomUser.objects.get(pk=self.request.user.task.id)
AttributeError: 'RelatedManager' object has no attribute 'id'
can anyone pls help
Solution 1:[1]
You haven't mentioned your models. Try this.
task_id = models.PositiveIntegerField(blank=True,null=True)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Farooq |
