gpt4 book ai didi

python - 在 Django 1.6.x 中如何在 View 中获取关联模型的数据?

转载 作者:太空狗 更新时间:2023-10-30 01:33:55 25 4
gpt4 key购买 nike

经过大量谷歌搜索后,我没有找到任何在 View 中获取相关模型数据的相关解决方案。

事情是我通过 Ajax 向服务器请求并想要获取文件夹和文件夹创建者名称(来自用户模型)。但它没有返回创建者的名字。这是代码

模型.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

View .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('creator') 但没用。

在 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。

非常感谢任何帮助。

谢谢

最佳答案

您始终可以创建要在客户端使用的数据的字典:

def folder_list(request):   #called via ajax
folders_obj = UserFolder.objects.filter(creator=request.user).select_related('creator').order_by('-modified_date').all()
folders_dict = []
for folder in folders_obj:
d = {}
for k, v in folder.__dict__.items():
d[k] = str(v)
d["creator__first_name"] = folder.creator.first_name
folders_dict.append(d)
folders = pagination(folders_dict, request) #for pagination
folders = json.dumps({}) if not folders else serializers.serialize("json", folders)
return HttpResponse(folders)

在你的 js 中:

t = t.replace(/\{(C_ID)\}/g, v.creator__first_name); 

关于python - 在 Django 1.6.x 中如何在 View 中获取关联模型的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27653282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com