Sper că știe careva pe aici ceva Django (+ django rest framework)
Am creat două modele:
class Software(models.Model):
version_name = models.CharField(max_length=5, unique=True)
change_log = models.TextField(max_length=500)
def __str__(self):
return self.version_name
class Box(models.Model):
software_key = models.ForeignKey(Software) # legătura cu modelul Software
client_key = models.ForeignKey(Client) # folosit mai tarziu pentru un query
field1 = models.CharField(max_length=100, default='wi-fi')
field2 = models.CharField(max_length=125, unique=True)
field3 = models.CharField(max_length=50, unique=True)
def __str__(self):
return self.field1
Modelul Box este legat de Software prin foreign key.
Am creat un serializer ce ma ajuta sa returnez toate campurile modelului Box in format json
class BoxSerializer(serializers.ModelSerializer):
class Meta:
model = Box
fields = '__all__'
Valorile din model sunt returnate cu ajutorul unui view:
class BoxesListAPIView(ListAPIView):
"""view boxes of client id(from url param)"""
serializer_class = BoxSerializer
def get_queryset(self, *args, **kwargs):
client = self.kwargs['client']
queryset = Box.objects.filter(client_key=int(client))
return queryset
Tot acest set-up imi oferă un răspuns de genul:
{
"id": 2,
"field1": "valoare field 1",
"field2": "valoare field 2",
"field3": "valoare field 3",
"client_key": 1,
"software_key": 1,
},
, un răspuns mai mult decât corect. Doar că eu imi doresc ca pentru câmpul software_key
să imi returneze (și) altceva decât id-ul foreign-key-ului, ca în final să văd:
{
"id": 2,
"field1": "valoare field 1",
"field2": "valoare field 2",
"field3": "valoare field 3",
"client_key": 1,
"software_key": valoarea din coloana `version_name`,
},
Ce pot face?