2017-09-06 9 views
0

Djangoを初めて使用しています。私は2つのモデルのデータが必要で、1つのクエリでそれを実行したいと考えています。ここで私は私が必要なものを正確に与えるSQLで何をしています。誰かが私にジャンゴでそれを行う方法を教えてもらえますか?Djangoで2つのモデルからデータを取得

select api_userprofile.last_name, api_userprofile.first_name, 
    api_userdevice.is_admin, 
    api_userdevice.is_alerts_enabled,api_userdevice.is_owner from 
    api_userprofile 
    join api_userdevice on api_userdevice.user_id=api_userprofile.user_id 
    where api_userdevice.user_id=10 and api_userdevice.device_id=29 

これらは私の2つのモデルです:

class UserDevice(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=False) 
    device = models.ForeignKey(Device, on_delete=models.PROTECT, null=False) 
    activation_date = models.DateTimeField(default=timezone.now, null=False) 
    friendly_name = models.CharField(max_length=20, null=True, blank=True) 
    is_owner = models.BooleanField(null=False, default=False) 
    is_admin = models.BooleanField(null=False, default=True) 
    is_alerts_enabled = models.BooleanField(null=False, default=True) 

class UserProfile(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=False) 
    token = models.TextField(null=False, blank=True) 
    first_name = models.TextField(null=True, blank=True) 
    last_name = models.TextField(null=True, blank=True)  

任意の助けいただければ幸いです。

+0

私は上記の私のSQLクエリでやったジャンゴでやりたいです。私はuserprofileから姓と名字、user_viceからis_admin、is_owner、is_alerts_enabledが必要です。 –

+0

あなたは次のようなことを試すことができます:https://chriskief.com/2015/01/12/combine-2-django-querysets-from-different-models/ – jape

答えて

1

それを行うための簡単な方法があります:

User.objects.filter(userdevice__id=29, id=10).values('userdevice__is_owner', 'userdevice__is_admin', 'userdevice__is_alerts_enabled', 'userprofile__first_name', 'userprofile__last_name') 
+0

ありがとう、私はまた、デバイスIDでフィルタリングする必要があります。 –

+0

@robertwoodsそれでフィルタ条件にそれを加えて、答えを更新しました。 –

+0

私は方法が分かっていたとしても、私はここに尋ねていません。 –