Добавить новый атрибут в сериализатор, но он не появляется
Я хочу добавить новый атрибут apartment_sold в сериализатор Transaction, но, похоже, это не работает!
serializes.py
class TransactionSerializer(serializers.HyperlinkedModelSerializer):
buyer = serializers.ReadOnlyField(source='buyer.username')
apartment_sold = serializers.HyperlinkedRelatedField(view_name='sold-detail', read_only=True)
class Meta:
model = Transaction
fields = [
'id','buyer','apartment_sold','timestamp'
]
views.py
class SoldViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Apartment.objects.filter(issold=True).order_by('-timestamp')
serializer_class = ApartmentSerializer
class TransactionViewset(viewsets.ModelViewSet):
queryset = Transaction.objects.all().order_by('-timestamp')
serializer_class = TransactionSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def perform_create(self, serializer):
transaction = serializer.save(buyer=self.request.user)
transaction.apartment.issold = True
transaction.apartment.save()
Я думаю, что в модели вы определили имя поля внешнего ключа как apartment
, а не apartment_sold
.
class TransactionSerializer(serializers.HyperlinkedModelSerializer):
buyer = serializers.ReadOnlyField(source='buyer.username')
apartment = serializers.HyperlinkedRelatedField(view_name='sold-detail', read_only=True)
class Meta:
model = Transaction
fields = [
'id','buyer','apartment','timestamp'
]