我正在开发一个Django(v1.11.0)项目,我有两个名为Song的模型,其中包含用户歌曲和GenericSong,其中包含管理歌曲。
class Song(models.Model):
album = models.ForeignKey(Album, on_delete=models.CASCADE)
song_title = models.CharField(max_length=250)
audio_file = models.FileField()
is_favorite = models.BooleanField(default=False)
def __str__(self):
return self.song_title
class GenericSong(models.Model):
album = models.ForeignKey(GenericAlbum, on_delete=models.CASCADE)
song_title = models.CharField(max_length=250)
audio_file = models.FileField(default='')
is_favorite = models.BooleanField(default=False)
def __str__(self):
return self.song_title
我想列出数据库中包含用户和管理歌曲的所有歌曲,问题是,我想用分页列出。 我为一个只包含使用此视图的用户歌曲的页面做了这个,这很好用:
@login_required()
def songs(request, filter_by=None):
users_songs = Song.objects.filter(album__user=request.user)
page = request.GET.get('page', 1)
if filter_by == 'favorites':
users_songs = users_songs.filter(is_favorite=True)
paginator = Paginator(users_songs, 10)
try:
songs_page = paginator.page(page)
except PageNotAnInteger:
songs_page = paginator.page(1)
except EmptyPage:
songs_page = paginator.page(paginator.num_pages)
return render(request, 'music/songs.html', {
'song_list': songs_page,
'filter_by': filter_by,
})
但是在第二种观点中,我不知道如何在一个变量中制作歌曲和genericsong以进行分页,这里是我要对其进行更改的所有歌曲视图:
@login_required()
def all_songs(request, filter_by=None):
users_songs = Song.objects.all()
generic_songs = GenericSong.objects.all()
return render(request, 'music/songs.html', {
'song_list_all': users_songs,
'generic_song_list': generic_songs,
'filter_by': filter_by,
})
答案 0 :(得分:1)
您有两个相同的型号。将它们合并为一个并添加类型:
app.post('/top', function (req, res) {
var obj;
fs.readFile('./object.json', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
console.log(obj["fruit"]);
console.log(obj["thyroid"]);
res.render(
'disp.ejs',
{
food: obj["fruit"]
name: obj["thyroid"]
}); // render
});
});
然后像往常一样用户Paginator进行过滤
class Song(models.Model):
album = models.ForeignKey(Album, on_delete=models.CASCADE)
song_title = models.CharField(max_length=250)
audio_file = models.FileField()
is_favorite = models.BooleanField(default=False)
types = models.PositiveIntegerField(choices=SONG_TYPES, blank=True, null=True, default=1)
def __str__(self):
return self.song_title