2013-01-22 83 views
4

我在Django這樣的模式:錯誤(1242,'Subquery返回多於1行')錯誤?

class File(models.Model): 
    users = models.ForeignKey(User) 
    file_name = models.CharField(max_length=100) 
    type = models.CharField(max_length=10) 
    source = models.CharField(max_length=100) 
    start_date = models.TextField() 
    end_date = models.TextField() 
    duration = models.TextField() 
    size = models.TextField() 
    flag = models.TextField() 
    #delete_date = models.CharField(max_length=100, null=True, blank=True) 

class Share(models.Model): 
    users = models.ForeignKey(User) 
    files = models.ForeignKey(File) 
    shared_user_id = models.IntegerField() 
    shared_date = models.TextField() 

我試圖提取共享在用戶登錄文件。我簡單查詢共享

file_s = Share.objects.filter(users_id=log_id) 

這將提取登錄用戶共享的文件。因爲,現在我知道是哪個文件共享在用戶登錄我試圖讓從文件表中的文件信息:

shared_file = File.objects.filter(users_id=file_s) 

但這返回:

DatabaseError at /shared_by_me/ 
(1242, 'Subquery returns more than 1 row') 

#my_views 
def shared_by_me(request): 
    log_id = request.user.id 
    username = request.user.username 
    #shared_file = File.objects.filter(users_id=file) 
    file_s = Share.objects.filter(users_id=log_id) 
    shared_file = File.objects.filter(users_id=file_s) 
    #b = Share.objects.filter(users_id=log_id) 
    return render_to_response('shared_by_me.html', {'shared_by_me':shared_file, 'username':username}, context_instance=RequestContext(request)) 

#my_template 
{% for choice in shared_by_me %} 
      <tr class="oddclass"> 
       <td><input type="checkbox" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" /></td> 
       <td><label for="choice{{ forloop.counter }}">{{ choice.file_name }}</label></td> 
       <td>{{ choice.type }}</td> 
       <td>{{ i.size }}</td> 
       <td>{{ i.end_date }}</td> 
      </tr> 
{% endfor %} 

我在做什麼錯?

回答

10

因爲file不是一個模式,而是一個QuerySet,你應該使用__in,像:

shared_file = File.objects.filter(users_id__in=file_s) 
+0

謝謝您的回答。原來我的查詢是錯誤的。該列表中的所有文件都屬於file_table中的user_id。但我只想列出用戶中的shared_by_logged文件。 – user1881957

+0

我已經回答了您的原始問題:「(1242,'Subquery返回多於一行')Django錯誤?」。爲您的新問題發佈一個新問題。 – danihp

相關問題