J'essaie d'ajouter des objets de mon modèle dans mon CBV, j'ai un modèle créé donc j'essaie de les transmettre à mes vues, mais cela ne fonctionne pas, bien que j'ai créé 2 classes qui sont Pricing et Pricingservice, je Je veux un inline pour un champ dans Pricingservice, ce que j'ai fait, mais je ne sais pas comment ajouter les deux à ma vue dans CBV dans la vue afin d'y accéder dans mon modèle, voici mon code ci-dessous, veuillez m'aider car j'ai se bat contre cela depuis des jours, merci
<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>
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 PricingserviceAdmin(admin.StackedInline):
model = Pricingservice
@admin.register(Pricing)
class PricingAdmin(admin.ModelAdmin):
inlines = [PricingserviceAdmin]
class Meta:
model = Pricing
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
[
] 1
3 Réponses :
Il serait préférable d'utiliser une ListView . Vous devrez indiquer à Django quel est le modèle pertinent pour votre vue, c'est-à-dire:
{% for pricingservice in pricingservice_list %}
{{ pricingservice.pricing }}
{% endfor %}
Et puis dans votre modèle, vous pouvez utiliser:
class HomePageView(ListView):
model = Pricingservice
template_name = 'pages/home.html'
Je ne sais pas exactement en quoi vos deux modèles diffèrent, mais il serait peut-être préférable de les fusionner?
oh merci d'avoir répondu, je vais essayer ceci maintenant mais que signifie fusionner mes deux modèles ensemble?
@ChosenBrain Y a-t-il une bonne raison de séparer ces modèles? Il semble que ce serait mieux s'il ne s'agissait que d'un seul modèle? Quelle erreur obtenez-vous?
en fait, je veux simplement ajouter plusieurs champs de mon administrateur à la fois, c'est pourquoi je suis l'inline
essayez ceci
{% for pricingservice in Pricingservice_list %}
<ul>
<li>{{ pricingservice }}</li>
</ul>
{% endfor %}
path('', HomePageView.as_view(), name='home'),
path('price/', PricePageView.as_view(), name='price'),
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'
Je ne suis pas sûr que cela fonctionnera mais essayez ceci si cette réponse ne fonctionne pas pour vous
Essayez cette solution:
{% for pricing in object_list %}
{{pricing.plans}}<br>
{% for service in pricing.pricingservice_set.all %}
{{ service.services }}<br>
{% endfor %}
{% endfor %}
Et puis essayez ce modèle:
class HomePageView(ListView):
model = Pricing
template_name = 'pages/home.html'
Veuillez ajouter un style vous-même. :)