У меня есть следующая модель машины.
class Machine(models.Model):
operators = models.ManyToManyField(User, related_name='machines', blank=True)
elasticsearch_id = models.PositiveIntegerField(default=None, null=True, blank=True)
company = models.ForeignKey(Company, default=None, null=True, blank=True,on_delete=models.SET_DEFAULT)
machine_brand = models.CharField(max_length=200, null=False)
machine_model = models.CharField(max_length=200, default='')
machine_picture = models.URLField(max_length=200, null=True)
tools = models.ManyToManyField('Tool', default=None, blank=True)
clustered_tags = JSONField(null=True)
elasticsearch_tags = JSONField(null=True, blank=True, default=DEFAULT_TAG_MAP)
machine_slug = models.SlugField()
Со следующим сериализатором .
class MachineSerializer(serializers.ModelSerializer):
class Meta:
model = Machine
fields = '__all__'
С моей точки зрения, я фильтрую данные о компании, к которой принадлежит зарегистрированный пользователь.Теперь я хочу сериализовать объект и вернуть его клиенту.Однако я не знаю заранее, является ли набор запросов списком объектов или отдельным объектом, чтобы я мог установить флаг many сериализатора на true или false.
@api_view(['GET','POST'])
def manage_operators(request):
user_machines = Machine.objects.filter(company=request.user.company)
user_machines_ser = MachineSerializer(user_machines, many=True)
return Response({'machines': user_machines_ser.data})
Есть ли какой-нибудь элегантный способ решить эту проблему?Я мог бы решить это таким образом, но должен быть лучший способ сделать это.