django1.7 Queryset select 来自多个模型的不同数据
django1.7 Queryset select distinct data from multiple models
亮点
我正在尝试从多个检索不同的数据 models.What 是实现此目的的最佳解决方案吗?我需要 Django1.7 代码。
问题
我想检索以 search_key
开头的文件的完整详细信息,前提是请求的用户有权访问它。
相关数据
modes.py
class FileDetails(models.Model):
fileId = models.CharField(max_length = 100,primary_key=True,db_index=True)
fileName=models.CharField(max_length = 100)
fileSize=models.IntegerField(max_length = 1000,blank=True,default=0)
class Permission(models.Model):
user = models.ForeignKey(UserProfile)
class FileShare(models.Model):
owner = models.ForeignKey(UserProfile)
file_requested=models.ForeignKey(FileDetails)
permission=models.ManyToManyField(Permission)
filedetails =FileDetails.objects.filter(fileName__startswith=search_key)
for f in filedetails:
fileshare=FileShare.objects.get( file_requested=f.fileId)
try:
if fileshare.permission.get(user=current_user):
filedet =FileDetails.objects.get(fileId=fileshare.file_requested)
ownership.append(fileshare.owner)
FileID.append(filedet.fileId)
FileName.append(str(filedet.fileName.split('Temp/')[1]))
FileSize.append(float(format(filedet.fileSize/1000000.0, '.2f')))
filedetails=zip(FileName,FileSize,FileID,ownership)
except ObjectDoesNotExist :
pass
亮点
我正在尝试从多个检索不同的数据 models.What 是实现此目的的最佳解决方案吗?我需要 Django1.7 代码。
问题
我想检索以 search_key
开头的文件的完整详细信息,前提是请求的用户有权访问它。
相关数据
modes.py
class FileDetails(models.Model):
fileId = models.CharField(max_length = 100,primary_key=True,db_index=True)
fileName=models.CharField(max_length = 100)
fileSize=models.IntegerField(max_length = 1000,blank=True,default=0)
class Permission(models.Model):
user = models.ForeignKey(UserProfile)
class FileShare(models.Model):
owner = models.ForeignKey(UserProfile)
file_requested=models.ForeignKey(FileDetails)
permission=models.ManyToManyField(Permission)
filedetails =FileDetails.objects.filter(fileName__startswith=search_key)
for f in filedetails:
fileshare=FileShare.objects.get( file_requested=f.fileId)
try:
if fileshare.permission.get(user=current_user):
filedet =FileDetails.objects.get(fileId=fileshare.file_requested)
ownership.append(fileshare.owner)
FileID.append(filedet.fileId)
FileName.append(str(filedet.fileName.split('Temp/')[1]))
FileSize.append(float(format(filedet.fileSize/1000000.0, '.2f')))
filedetails=zip(FileName,FileSize,FileID,ownership)
except ObjectDoesNotExist :
pass