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. :)