Je me demande comment exécuter une vérification de la réalité pour décider quel fichier gabarit utiliser. Comment puis-je accéder à agency_count à partir de AgencyFullView? Ce que j'ai actuellement des rendements type d'objet « AgencyFullMixin » n'a pas d'attribut « agency_count »Comment accéder à une variable dans les vues basées sur les classes héritées
class AgencyFullMixin(ContextMixin):
def get_context_data(self, pk, **kwargs):
context_data = super(AgencyFullMixin, self).get_context_data(**kwargs)
agency = Agencies.objects.filter(pk=pk)
context_data["agency"] = agency
agency_count = agency.count()
context_data["agency_count"] = agency_count
return context_data
class AgencyFullView(TemplateView, AgencyFullMixin):
if agency_count != 0: **<<<--- What to put here?**
template_name = 'community_information_database/agency_full.html'
else:
template_name = 'community_information_database/not_valid.html'
def get_context_data(self, **kwargs):
context_data = super(AgencyFullView, self).get_context_data(**kwargs)
return context_data
Le code AgencyFullView semble être écrit à droite dans le corps de la classe. Est-ce vraiment le cas? De plus, il semble qu'il n'y ait pas de variable 'agency_count' dans la classe mixin, vous avez' agency_count_test'. Rappelez-vous que 'agency_count_test' est une variable locale qui disparaîtra une fois que la méthode get_context_data() sera retournée. –
Vous essayez de définir votre modèle au niveau de la classe en fonction de quelque chose qui ne sera calculé que sur demande. Ça ne va pas marcher. Votre code 'if agency_count! = 0' ne s'exécutera qu'une seule fois au démarrage de l'application, pas pour chaque requête et ne pourra donc pas utiliser ce compte. –
@Mad Wombat J'ai supprimé la typo _test – Fish