Django REST get() возвращает более одного объекта
Я пытаюсь использовать вложенные сериализаторы для получения ответа, который включает поля из двух моделей. Однако я получаю следующую ошибку
get() returned more than one Location -- it returned more than 20!
При поиске решения кажется, что эта ошибка возникает при использовании get, но в моем представлении я использую вместо него filter. Я пытаюсь понять, какая часть кода вызывает ошибку.
Models.py
class Microcontrollers(models.Model):
name = models.CharField(max_length=25)
serial_number = models.CharField(max_length=20, blank=True, null=True)
type = models.CharField(max_length=15, blank=True, null=True)
software = models.CharField(max_length=20, blank=True, null=True)
version = models.CharField(max_length=5, blank=True, null=True)
date_installed = models.DateField(blank=True, null=True)
date_battery_last_replaced = models.DateField(blank=True, null=True)
source = models.CharField(max_length=10, blank=True, null=True)
friendly_name = models.CharField(max_length=45, blank=True, null=True)
private = models.IntegerField()
datetime_updated = models.DateTimeField(db_column='DateTime_Updated') # Field name made lowercase.
class Meta:
managed = True
db_table = 'microcontrollers'
verbose_name_plural = "Microcontrollers"
def __str__(self):
return self.friendly_name
class StationStatus(models.Model):
microcontroller = models.ForeignKey(Microcontrollers, models.DO_NOTHING)
date_from = models.DateField()
date_to = models.DateField(blank=True, null=True)
location = models.CharField(max_length=45)
active = models.IntegerField()
notes = models.CharField(max_length=100, blank=True, null=True)
datetime_updated = models.DateTimeField(db_column='DateTime_Updated') # Field name made lowercase.
class Meta:
managed = True
db_table = 'station_status'
verbose_name_plural = 'Station Status'
Serializers.py
class StationInfoSerializer(serializers.ModelSerializer):
def create(self, validated_data):
pass
def update(self, instance, validated_data):
pass
class Meta:
model = StationStatus
fields = ['location', 'active']
class StationSerializer(serializers.ModelSerializer):
info = StationInfoSerializer(many=True, read_only=True)
def create(self, validated_data):
pass
def update(self, instance, validated_data):
pass
class Meta:
model = Microcontrollers
fields = ['name', 'friendly_name', 'info']
Views.py
class stationsBasicInfo(generics.ListAPIView):
#authentication_classes = (TokenAuthentication,)
#permission_classes = (IsAuthenticated,)
serializer_class = StationInfoSerializer
def get_queryset(self):
source = self.kwargs['sourceName']
name = self.kwargs['stationName']
data = Microcontrollers.objects.filter(name=name)
return data
def list(self, request, *args, **kwargs):
res = super(stationsBasicInfo, self).list(request, *args, **kwargs)
res.data = {"station_info": res.data}
return res
Полное сообщение об ошибке