Django: 基于URL slug查询两张表。

问题描述 投票:0回答:1

我已经建立了一个音乐制作人和他们的样品的数据库。

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 %}

返回整个数据库的样本。

python django django-models django-views django-queryset
1个回答
0
投票

对于下面的人来说。这个查询生产者表的slug=slug,然后用producer_id过滤样本表。看起来就像一个SQL连接语句。

    producer = Producers.objects.get(slug = slug)
    queryset = Samples.objects.filter(producer=producer.producer_id)
© www.soinside.com 2019 - 2024. All rights reserved.