第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 django 中基于類的視圖發(fā)送多個模型

如何從 django 中基于類的視圖發(fā)送多個模型

喵喵時光機 2023-07-11 14:28:34
我制作了一個書單,可以在 Booklist 類中上傳封面圖像。為了獲得更多圖像,我添加了另一個名為 Bookcover 的類?,F(xiàn)在在 Views.py 中如何使用 BookListView 發(fā)送 Booklist 和 Bookcovermodels.py 文件如下from django.db import modelsfrom django.utils import timezoneclass Booklist(models.Model):    title = models.CharField(max_length=100)    author = models.CharField(max_length = 100)    cover = models.ImageField(null=True, blank=True, default='default-book.jpg')    description = models.TextField()    date_posted = models.DateTimeField(default=timezone.now)    price = models.DecimalField(decimal_places=3, max_digits=100)    def __str__(self):    return self.titleclass Bookcover(models.Model):    post = models.ForeignKey(Booklist, default=None, on_delete=models.CASCADE)    covers = models.ImageField(upload_to = 'images/')    def __str__(self):        return self.post.title這是views.py 文件from django.shortcuts import renderfrom django.views.generic import ListViewfrom .models import Booklist, Bookcoverdef home(request):    return render(request, template_name='home/index.html')class BookListView(ListView):    model = Booklist    template_name = 'home/index.html'    context_object_name = 'books'    ordering = ['-date_posted'] 
查看完整描述

1 回答

?
料青山看我應(yīng)如是

TA貢獻1772條經(jīng)驗 獲得超8個贊

如果您創(chuàng)建一個ForeignKey,Django 將自動生成一個反向關(guān)系來訪問(在本例中)BookCover特定的相關(guān) s?Book。由于您沒有指定related_name=…參數(shù) [Django-doc],因此該關(guān)系的名稱為modelname_set,因此在本例中為bookcover_set。

在模板中,您可以通過以下方式訪問書籍的書籍封面:

{% for book in books %}

? ? {{ book.title }}

? ? {% for cover in book.bookcover_set.all %}

? ? ? ? <img src="{{ cover.covers.url }}">

? ? {% endfor %}

{% endfor %}

然而,這將導(dǎo)致N+1問題。您可以使用.prefetch_related(…)[Django-doc]來避免這種情況:

class BookListView(ListView):

? ? queryset = Booklist.objects.prefetch_related('bookcover_set')

? ? template_name = 'home/index.html'

? ? context_object_name = 'books'

? ? ordering = ['-date_posted']?


查看完整回答
反對 回復(fù) 2023-07-11
  • 1 回答
  • 0 關(guān)注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號