2016-04-11 15 views
0

私はDjango RESTフレームワークを使用しています。django rest framework、non pkネストシリアライザ

私はこのように見えるモデルのカップル持っている:私は、(デフォルトのクエリセットをオーバーライド)このビューを使用している学生の数と、各ユーザー・レコードのデータを取得するために

class Users(models.Model): 
    userfieldid = models.AutoField(db_column='FieldID', primary_key=True) # Field name made lowercase. 
    forename = models.CharField(db_column='Forename', max_length=50, blank=True, null=True) # Field name made lowercase. 
    surname = models.CharField(db_column='Surname', max_length=50, blank=True, null=True) # Field name made lowercase. 
    student_number = models.CharField(db_column='ExternalFieldID', max_length=255, blank=True, null=True) # Field name made lowercase. 

class Events(models.Model): 
    eventfieldid = models.AutoField(db_column='FieldID', primary_key=True) # Field name made lowercase. 
    eventdescription =models.CharField(db_column='EventDescription', max_length=200, blank=True, null=True) # Field name made lowercase. 
    eventdate = models.DateTimeField(db_column='EventDate', blank=True, null=True) # Field name made lowercase. 
    user= models.ForeignKey(Users,db_column='UserFieldID',related_name="holder") 

を:

class UserDetail(generics.ListAPIView): 

serializer_class = UserDetailSerializer 

def get_queryset(self): 
    student_number=self.kwargs['student_number'] 
    return Users.objects.using("lockers").filter(student_number=student_number) 

と、すべての作業罰金です。このシリアライザ

class UserDetailSerializer(serializers.HyperlinkedModelSerializer): 

    class Meta: 
     model=Users 
     fields=('student_number','forename','surname') 

。しかし、シリアライザを連鎖させて、指定されたユーザのレコードのイベントモデルのすべてのイベントを表示したいと思います。しかし、私はそれを理解(と私はよく、この間違ったを得ている可能性が)ちょうどシリアライザにこれを追加し、よう:

class EventsSerializer(serializers.ModelSerializer): 

    class Meta: 
     model=Events 

class UserDetailSerializer(serializers.HyperlinkedModelSerializer): 
    events=EventsSerializer(many=True,read_only=True) 

    class Meta: 
     model=Users 
     fields=('student_number','forename','surname','events') 

イベントシリアライザがそれに一致するようにしようとするように、これは動作しませんが、レコードののPKを反対ですstudent_number、これは匹敵しません。

EventsSerializerでUsers pk(userfieldid)を使用するユーザーのイベントを検索する方法はありますか?

私はこれを大丈夫と説明しました。それはすべて私にとって初めてのことなので、非常に混乱しています。

+0

質問タイトルは、この質問は日付の比較についてですが、質問自体のどこにでも日付は記載していません。問題をより詳しく説明するためにタイトルを更新することをおすすめします。あああ、 –

+0

私は古い質問を削除しましたが、タイトルを変更するのを忘れました! – user1412705

答えて

0

私は問題があるとは思わない。イベントの外部キーは、ユーザーの主キーを参照します。学生番号などの任意の列でフィルタリングできますが、返されるユーザーをフィルタするためにのみ使用されます。各ユーザーに対して、ネストされたシリアライザは、そのユーザーの主キーを持つイベントをユーザーフィールドに返します。

関連する問題