У меня есть модели ниже в моем проекте
class TicketCounter(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_counter_name = models.CharField(max_length=100, default="")
class TicketCategory(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_category_name = models.CharField(max_length=100, default="")
ticket_category_rate = models.CharField(max_length=100, default="")
class WorkerToTicketCounter(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_counter = models.ForeignKey(TicketCounter, related_name="workers")
worker = models.ForeignKey(User, related_name='ticket_counter')
worker_to_ticket_counter_is_deleted = models.BooleanField(default=False)
class TicketCounterToCategory(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_counter = models.ForeignKey(TicketCounter, related_name="categories")
ticket_category = models.ForeignKey(TicketCategory)
Каждый TicketCounter
будет иметь работника (пользователя) и TicketCategory
с. Когда работник входит в приложение Android. Он должен получить свои данные, такие как email
first_name
и 'last_name'. Я сделал это с нижеуказанным сериализатором.
class MeSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'pk',
'first_name',
'last_name',
'email',
)
В моем приложении есть необходимость, где нужны не только детали, но и связанные с ним TicketCounter
. Поэтому я добавил ticket_counter
, как показано ниже
class MeSerializer(serializers.ModelSerializer):
ticket_counter = serializers.SerializerMethodField(read_only=True)
class Meta:
model = User
fields = (
'pk',
'first_name',
'last_name',
'email',
'ticket_counter',
)
def get_ticket_counter(self, user):
qs = user.ticket_counter.filter(worker_to_ticket_counter_is_deleted=False)
if qs.exists() and hasattr(qs.first().ticket_counter, 'ticket_counter_name'):
return qs.first().ticket_counter.ticket_counter_name
return "--"
Но теперь мне нужно получить связанные категории этого ticket_counter
в списке объектов в MeSerializer
. Является ли это возможным?