2013-07-22 61 views
0

我想找到一種方法,可以在Queryset中使用多個模型。例如,在我的情況下,我有2個表格 - 照片和用戶。在Django中使用多個模型的自定義查詢集

class Photo(models.Model): 
username = models.ForeignKey(User) 
image = models.ImageField(upload_to='photos') 
alt_text = models.CharField(max_length=255) 

class DR_User(models.Model): 
    userid = models.ForeignKey(User) 
    follows = models.ManyToManyField('self', related_name='followed_by', symmetrical=False, blank=True) 
objects = DR_User_Manager() 

class DR_User_Query_Set(QuerySet): 
    def profile_pic(self): 
     # uid = self.userid 
     photo = Photo.objects.get(username=uid) 
     if photo.exists(): 
      return photo.image.url 
     else: 
      return 'http://d12df125d01b8a258a3a-8112fdc02f7d385b44f56eb9e899d81c.r88.cf2.rackcdn.com/default.png' 

    def userinfo(self): 
     uid = self.userid 
     obj = User.objects.get(id=uid) 
     userinfo = obj.first_name + ' ' + obj.last_name 
     return userinfo.title() 

class DR_User_Manager(models.Manager): 
    def get_query_set(self): 
     return DR_User_Query_Set(self.model) 
    def __getattr__(self, name): 
     return getattr(self.get_query_set(), name) 

我的目標是創造DR_User自定義查詢集在那裏我可以得到用戶表(AUTH_USER),從照片表圖片網址的用戶信息...所以,當我使用 -

user = DR_user.objects.all() 

我可以使用我的模板中的{{user.profile_pic}}和{{user.userinfo}}一次訪問它們。

+0

難道你不能只是遍歷關係嗎? –

+0

原諒我,如果我是一個noob,但你能給我一個例子嗎? –

+0

假設你得到用戶user = User.objects.get(id = 1)'。從這個關係你可以去'user.photo_set.all()'獲取所有圖像。 –

回答

0

工作太多。

class DR_User(models.Model): 
    ... 
    @property 
    def profile_pic(self): 
    try: 
     return self.userid.image.url 
    except models.DoesNotExist: 
     return settings.DEFAULT_PROFILE_PIC_URL 

    @property 
    def userinfo(self): 
    return unicode(self.userid) 
+0

謝謝:)作品像一個魅力:) –

相關問題