我已经建立了一个音乐制作人和他们的样品的数据库。
class Producers(models.Model):
producer_id = models.AutoField(db_column='Producer_ID', primary_key=True, blank=True, null=False) # Field name made lowercase.
slug = models.SlugField()
name = models.TextField(db_column='Name') # Field name made lowercase.
info = models.TextField(db_column='Info', blank=True, null=True) # Field name made lowercase.
image = models.ImageField(null=True, blank=True)
class Meta:
managed = False
db_table = 'producers'
class Samples(models.Model):
song_id = models.AutoField(db_column='Song_ID', primary_key=True, blank=True, null=False) # Field name made lowercase.
producer = models.ForeignKey(Producers, models.DO_NOTHING, db_column='Producer_ID') # Field name made lowercase.
artist = models.TextField(db_column='Artist') # Field name made lowercase.
title = models.TextField(db_column='Title') # Field name made lowercase.
class Meta:
managed = False
db_table = 'samples'
我已经设置了指向相应制作人的Slug Urls,例如:"producersj-dilla"
我想让每个制作人的简历中列出他们的样品。
试着利用
def bio(request, slug):
producer_list = Producers.objects.all().filter(slug=slug)
samples_list = Samples.objects.all()
queryset = sorted(
chain(producer_list, samples_list),
key=lambda instance: instance.producer_id)
{% for sample in queryset %}
<li>
<span>Artist: {{ sample.artist }}</span> <br/>
<span>Title: {{ sample.title }}</span> <br/>
<span>Title: {{ sample.producer_id }}</span> <br/>
<hr/>
</li>
{% endfor %}
返回整个数据库的样本。
对于下面的人来说。这个查询生产者表的slug=slug,然后用producer_id过滤样本表。看起来就像一个SQL连接语句。
producer = Producers.objects.get(slug = slug)
queryset = Samples.objects.filter(producer=producer.producer_id)