2017-10-12 13 views
0

の外部キー「自動列検索は、」次のモデルを考えてみましょう:ジャンゴ

class Book(models.Model): 
    id = models.AutoField(primary_key=True) 
    title = models.CharField(max_length=255) 
    publisher = models.ForeignKey('Publisher') 

class Publisher(models.Model): 
    id = models.AutoField(primary_key=True) 
    publisher_name = models.CharField(max_length=255) 

私はBook.objects.filter(id=123)を呼び出すしたいと思いますが、これについての出力は次のようになります。管理ユーザーのための

{ 'id':123, 'title':'ABC', 'publisher':1 }、および

{ 'id': 123, 'title':'ABC', 'publisher':'XYZ Books' }通常のユーザーの場合。

私の質問は、select_related()で行うことができますか、models.ForeignKey()パラメータのみを変更することはできますか?

+0

クエリでselect_relatedを使用して、apiを実際に呼び出すユーザーに応じて変更します。 –

+0

通常のユーザー権限の発行者名が必要ですか? –

答えて

0

書籍オブジェクトから出版社名を取得できるのは、通常のユーザーの場合はBook.objects.filter(id=123).publisher_nameです。それ以外の場合はパブリッシャーのみを呼び出します。

class Book(models.Model): 
    id = models.AutoField(primary_key=True) 
    title = models.CharField(max_length=255) 
    publisher = models.ForeignKey('Publisher') 

    @property 
    def publisher_name(self): 
     return self.publisher.publisher_name 

class Publisher(models.Model): 
    id = models.AutoField(primary_key=True) 
    publisher_name = models.CharField(max_length=255)