經歷了這麼多谷歌上搜索我did'nt發現在視圖中獲得相關的模型數據的任何相關的解決方案。在Django 1.6.x中如何獲取視圖中相關模型的數據?
東西我請求通過Ajax的服務器,想要提取的文件夾和文件夾的創建者名稱(從用戶模式)。但它沒有讓我知道創作者的名字。下面的代碼
models.py
class UserFolder(models.Model):
creator = models.ForeignKey(User)
name = models.CharField(blank=False, max_length=150)
is_shared = models.BooleanField(default=False)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
views.py
def pagination(obj, request):
max = request.GET.get('max') if 'max' in request.GET else 1
paginator = Paginator(obj, max) # Show 25 contacts per page
page = request.GET.get('page')
try:
return paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
return paginator.page(1)
except EmptyPage:
return ""
def folder_list(request): #called via ajax
folders = UserFolder.objects.filter(creator=request.user.id).order_by('-modified_date')
folders = pagination(folders, request) #for pagination
folders = json.dumps({}) if not folders else serializers.serialize("json", folders)
return HttpResponse(folders)
我已經試過.select_related( '創造者')太多,但它did'nt工作。
在JS,我獲取的數據是這樣的:
$.each(data, function(i, v) {
var t = fldrTpl, id = v.pk;
v = v.fields
t = t.replace(/\{(ID)\}/g, id);
t = t.replace(/\{(NAME)\}/g, v.name);
t = t.replace(/\{(C_SIZE)\}/g, (v.current_size == null?0:v.current_size));
t = t.replace(/\{(C_ID)\}/g, v.creator.first_name);
t = t.replace(/\{(C_DATE)\}/g, v.created_date);
$(".my-folder-table").append(t);
});
v.creator.first_name總是返回undefined。
任何幫助將非常感激。
感謝
它不應該是folders = UserFolder.objects.filter(creator = request.user)而不是request.user.id。 request.user是User的一個實例,而.id的結果是一個整數。 – user2707389
感謝您的評論但我也嘗試過這一點,這也沒有奏效。它僅返回UserFolders的字段。 –
你有沒有測試FIRST_NAME在進入用戶模式存在,並給我們的用戶模型的細節,以及。 –