Reputation: 639
I have a model where certain fields are automatically set (timestamp, pk).
# models.py
class thisModel(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
topic = models.CharField(max_length=50)
message = models.CharField(max_length=100, default='')
Below is my serializer:
# serializer.py
class thisSerializer(serializers.ModelSerializer):
class Meta:
model = thisModel
fields = ('pk', 'topic', 'timestamp', 'message',)
When creating my model, I need only specify the topic and message.
data={}
data['topic'] = 'paper'
data['message'] = 'This is a message'
serializer = thisSerializer(data=data)
if serializer.is_valid(): # True
serializer.save()
# I would like to retrieve the PK and Timestamp here
The model is created, but I have no way of retrieving that model as I have no unique identifier for it.
Doing serializer.data['topic']
and serializer.data['message']
returns these fields as intended.
Doing serializer.data['pk']
returns an error: KeyError: 'pk'
Any idea on how to retrieve these fields?
Upvotes: 0
Views: 167
Reputation: 2830
The data
attribute on serializer
is just the data which you specified, but serializer.save()
returns the newly created object. Try this:
if serializer.is_valid():
obj = serializer.save()
new_pk = obj.pk
new_timestamp = obj.timestamp
Upvotes: 1