Django:随机随机播放一个查询集并访问对象字段

时间:2017-12-03 12:20:39

标签: python django django-rest-framework django-views

我有一个清单

[<Upload: 33-bb6f5d9a98604450>, <Upload: 35-bb6f5d9a98604450>, <Upload: 30-bb6f5d9a98604450>, <Upload: 31-bb6f5d9a98604450>, <Upload: 34-bb6f5d9a98604450>]

生成
ques = list(sorted(Upload.objects.filter(unique_id=tdetail), key=lambda x: random.random()))

<Upload: 33-bb6f5d9a98604450>

此处上传是模型,33-bb6f5d9a98604450是模型上传的slu .. 我们如何从此列表中提取Upload模型值

继承人的观点

def platform(request,e,slug):
article = get_object_or_404(Article,e=e)
tdetail=get_object_or_404(test_detail,test_id=article)
if Platform.objects.filter(user=request.user,test_key=article).exists():
    platform=get_object_or_404(Platform,user=request.user,test_key=article)
    slugs = platform.list
    for obj in slugs:
        ques = Upload.objects.filter(slug=obj.slugs)

     #Upload.objects.filter(slug=slugs)
else:
    ques = list(sorted(Upload.objects.filter(unique_id=tdetail), key=lambda x: random.random()))

    platform=Platform()


    platform.user=request.user
    platform.test_key=article
    platform.list=ques
    platform.save()


return render(request, 'articles/platform.html',{'ques':ques})

这是我的平台模型

class Platform(models.Model):
user=models.ForeignKey(User)
test_key=models.ForeignKey(Article)
list=models.CharField(max_length=2000)

def __unicode__(self):
    return u"%s(%s)" % (self.user,self.id_apply)

class Meta:
    unique_together = ('user', 'test_key',)

2 个答案:

答案 0 :(得分:0)

你必须遍历你的清单。例如

for upload in ques:
    print upload.field_name

field_name是上传模型中的列(字段)。

答案 1 :(得分:0)

试试这个:

from random import shuffle
    shuffle(ques)

可以通过迭代生成的列表来访问对象字段。我可以看到你正在尝试随机乱输查询集。也许你可以这样做:

slugs = platform.list

反过来又是一个查询集,你可以像往常一样使用它。 或者也许你可以随机使用shuffle,并使用python:

假设问题是一个列表:

import json
slugs = json.loads(platform.list)

对于错误,而不是:

 ques = Upload.objects.filter(slug__in=slugs)

这样做:

import React, { Component } from 'react';
import './App.css';
import Continue from './components/Continue';
import Login from './components/Login';
import Table from './components/Table';
import Profile from './components/Profile';
import PropTypes from "prop-types";
import { BrowserRouter,Switch, Route,Redirect } from 'react-router-dom'


function loggedIn() {
 return !!localStorage.getItem('token');
}
class App extends Component {
  render() {
    const {location} = this.props.location;
    return (
     <div className="App">
       <BrowserRouter  >
         <Switch>
           <Route exact path = "/" component ={Login}/>
           <Route
             exact
             location={location}
             path = "/continue"
             component = {() =>
             loggedIn() ? <Continue /> : <Redirect to="/" />}
          />
          <Route
            exact
            location={location}
            path = "/home"
            component={() =>
            loggedIn() ? <Table /> : <Redirect to="/" />}
          />
         <Route
           exact
           location={location}
           path = "/profile"
           component={() =>
           loggedIn() ? <Profile /> : <Redirect to="/" />}
         />        
       </Switch>
     </BrowserRouter>
    </div>
   );
  }
 }
 App.propTypes = {
  location: PropTypes.shape({
   pathname: PropTypes.string.isRequired,
  }).isRequired
 };

 export default App;

将返回一个slug列表,之后代替循环:

npm install --save prop-types