I am relatively new to DRF and having hard time updating the foreign key in my model via POST request.
# Model for Event.
class Event(models.Model):
heading = models.TextField()
event_construction_site = models.ForeignKey(
ConstructionSite, on_delete=models.CASCADE, related_name='construction_site_events', null=True)
def __str__(self):
return str(self.id)
class ConstructionSiteShortSerializer(serializers.ModelSerializer):
class Meta:
model = ConstructionSite
fields = ['id']
# Serializer for Event.
class EventSerializer(serializers.ModelSerializer):
event_construction_site = ConstructionSiteShortSerializer()
event_posted_by = CustomUserSerializer()
class Meta:
model = Event
fields = ('id', 'heading', 'event_construction_site')
Structure of my GET response is as follows:
{
id: 1,
heading: "Truck with formwork arrived",
event_construction_site: {
id: 3
}
}
My concern here is how can I update the id of event_construction_site?
I tried updating it like as follows:
{
"heading": "a",
"event_construction_site": {"id": 2}
}
Dute to id of event_construction_site being nested field I get an error that says =>
The `.create()` method does not support writable nested fields by default.
querysetargument, overrideget_queryset, or set read_only=True, and if I set read_only=Trueto true then event_construction_site won't appear in my POST payload.