1

私はEventというdjangoモデルを持っています。これはCustomerモデルを参照しています。Django rest frameworkは1対多の関係データを取得します

event_name = models.CharField(max_length=200, unique=True) 
customer = models.ForeignKey(customer_models.Customer, db_index=True, 
    on_delete=models.SET_NULL, 
    related_name='customer_events', null=True) 
event_location = models.CharField(max_length=200, default='') 
event_date = models.DateField() 

APIの各ユーザーの最新のイベント名とともに顧客リストを取得する必要があります。

カスタマーserializers.pyファイルは

class CustomerSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Customer 
     fields = '__all__' 

カスタマーviews.pyファイルが、私はこれを実現するにはどうすればよい

class CustomerViewSet(viewsets.ModelViewSet): 
    queryset = Customer.objects.all() 
    serializer_class = CustomerSerializer 

あるのですか?あなたはその後、latest_event_nameためReadOnlyFieldを追加することができ、あなたのシリアライザでは

class Customer(models.Model): 
    ... 

    @property 
    def latest_event_name(self): 
     """Return latest event name.""" 

     # self.customer_events.order_by('event_date').last() 
     latest_event = self.customer_events.order_by('-event_date').first() 

     return latest_event.event_name if latest_event else None 

:あなたはCustomerインスタンスの最新のイベント名を返しpropertyを持つことができ、あなたのCustomerモデルで

答えて

2

class CustomerSerializer(serializers.ModelSerializer): 

    latest_event_name = serializers.ReadOnlyField() 

    class Meta: 
     model = Customer 
     fields = '__all__' 
+1

感謝出来た。 –

関連する問題