簡體   English   中英

如何將 model 中的對象添加到 django 中的 CBV?

[英]how can i add objects from my model to my CBV in django?

我正在嘗試將 model 中的對象添加到我的 CBV 中,我創建了一個 model,所以我試圖將它們傳遞給我的視圖,但它不起作用,盡管我創建了 2 個類,它們是定價和定價服務,我想要一個內聯對於我所做的 Pricingservice 中的一個字段,但我不知道如何將兩者都添加到視圖中的 CBV 視圖中以便在我的模板中訪問它們,下面是我的代碼,請幫助我,因為我一直在與這幾天,謝謝

model.py

class Pricing(models.Model):
    plans = models.CharField(max_length=250)
    amount = models.CharField(max_length=250)
    services = models.CharField(max_length=250)

  
    def __str__(self):
        return self.plans

class Pricingservice(models.Model):
    pricing = models.ForeignKey(Pricing, default=None, on_delete=models.CASCADE)
    services = models.CharField(max_length=250)

    

    def __str__(self):
        return self.pricing.plans

管理員.py

class PricingserviceAdmin(admin.StackedInline):
    model = Pricingservice

@admin.register(Pricing)
class PricingAdmin(admin.ModelAdmin):
    inlines = [PricingserviceAdmin]

    class Meta:
       model = Pricing

視圖.py

class HomePageView(TemplateView):
    template_name = 'pages/home.html'
    
    def get_context_data(self, **kwargs):
        context = super(HomePageView, self).get_context_data(**kwargs)
        context['Pricing'] = Pricing.objects.all()
        return context

模板.html

    <div class="row">
     {% for p in Pricing %}
    <div class="col-md-3 ftco-animate">
    
        <div class="pricing-entry pb-5 text-center">
            <div>
                <h3 class="mb-4">{{ p.plans }}</h3>
                <p><span class="price">#{{ p.amount }}</span> <span class="per">/ Month</span></p>
            </div>

            <ul>
                <li>{{ p.services }}</li>
        
            </ul>
    
            <p class="button text-center"><a href="#" class="btn btn-primary px-4 py-3">Get Offer</a></p>
    
        </div>

    
    </div>
    {% endfor %}
</div>

[我想在價格下添加定價服務 ] 1

最好使用ListView 您需要告訴 Django 與您的觀點相關的 model 是什么,即:

class HomePageView(ListView):
    model = Pricingservice
    template_name = 'pages/home.html'

然后在您的模板中,您可以使用:

{% for pricingservice in pricingservice_list %}
{{ pricingservice.pricing }}
{% endfor %}

我不確定你的兩個模型到底有什么不同,但也許合並它們會更好?

試試這個解決方案:

class HomePageView(ListView):
    model = Pricing
    template_name = 'pages/home.html'

然后試試這個模板:

{% for pricing in object_list %}
    {{pricing.plans}}<br>
    {% for service in pricing.pricingservice_set.all %}
        {{ service.services }}<br>
    {% endfor %}
{% endfor %}

請自己添加一些樣式。 :)

嘗試這個

視圖.py

class HomePageView(TemplateView):
    template_name = 'pages/home.html'
    
    def get_context_data(self, **kwargs):
        context = super(HomePageView, self).get_context_data(**kwargs)
        context['Pricing'] = Pricing.objects.all()
        return context

class PricePageView(ListView):
    model = Pricingservice
    template_name = 'pages/home.html'

網址.py

path('', HomePageView.as_view(), name='home'),
path('price/', PricePageView.as_view(), name='price'),

模板.html

{% for pricingservice in Pricingservice_list %}
                    <ul>
                        <li>{{ pricingservice }}</li>
                
                    </ul>
                    {% endfor %}

我不確定這是否可行,但如果該答案對您不起作用,請嘗試此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM