2016-10-23 12 views
-1

私は顧客のフルネームを取得したいが、最終的にはIDのみを取得する。Python外部キーからユーザーフルネームを取得する顧客

orders = Order.objects.filter(restaurant=request.user.restaurant).order_by('customer__id').values('customer__id', 'customer__address', 'customer__avatar', 'customer').annotate(total_order= Count('customer__id')) 

in value( 'customer')私は顧客のフルネームを取得したいが、私はidを取得する。

from django.contrib.auth.models import User 

class Customer(models.Model): 
    user = models.OneToOneField(User, on_delete= models.CASCADE, related_name= 'customer') 
    avatar = models.CharField(max_length= 500) 
    phone = models.CharField(max_length= 500, blank= True) 
    address = models.CharField(max_length= 500, blank= True) 

    def __str__(self): 
     return self.user.get_full_name() 

ありがとう。

+0

のですか? –

+0

\t \t \t \t \tの \t \t \t \t \t \t 同上 \t \t \t \t \t \t 顧客名\t \t \t \t \t カスタマーアバター \t \t \t \t \t \t カスタマー住所 \t \t \t \t \t \t 全順序 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t {{order.customer__id} {注文%で注文の%} \t \t \t \t \t \t \t \t \t } \t \t \t \t \t \t \t​​{{order.customer}} \t \t \t \t \t \t \t​​{{order.customer__avatar}} \t \t \t \t \t \t \t​​{{order.customer__address}} \t \t \t \t \t \t \t​​{{order.total_order}} \t \t \t \t \t \t \t \t \t \t \t {%ENDFOR%} \t \t \t \t –

+0

次モデル –

答えて

1

これは、valuesvalues_listの方法が機能する方法です。外部キーの場合は、id(または、外部キーポイントの固有フィールド)を返します。別のユーザーオブジェクトを取得するか、.valuesの代わりに.select_related(または.prefetch_related)を使用する必要があるかと心配です。ところで

は、.annotateは、この場合customer__addresscustomer__avatar.valuesに渡されたすべての非注釈付きフィールド、上GROUP BYの原因となります。

+0

私のコードを使用して、私はすでに私が望むものを表示することができますが、フルネームは表示できません。 –

+0

顧客名住所全順序 ABC ABCABCその –

+0

のような2 BBBのBBBB 1 CCCのCCCC 1 何か私が言ったようにモデルのインスタンスを返さない.values_list'、 '.values'と'。生の値のみ(外部キーフィールドの場合の主キー)。それをきちんとしたいのであれば、ユーザまたはユーザIDを取得してユーザのフルネームを返す 'get_user_full_name'関数を作成し、ビューと' Customer .__ str__'メソッドでその関数を再利用することができます。 –

0

私が使用している場合:

orders = Order.objects.select_related('customer').filter(restaurant= request.user.restaurant).annotate(total_order= Count('customer')) 

enter image description here

それはそのようになると、あなたは注文のコンテンツを投稿することができます私はパブロ1行をしたいが、全順序が2

関連する問題