Ich bin ein Autodidakt Amateur jemals versucht, Grundlagen von Python, Django und Programmierung im Allgemeinen zu verstehen. Ich versuche ein Problem zu verstehen, das ich hatte. SoKlasse Variablen vs Methoden in Django Class Based Views
Ich habe diese Klasse
class ContractsView(InventoryView):
template_name = "contracts.html"
page = "Contracts"
primary_table, secondary_table = build_contracts_tables(**{"commodity": None})
und verwendet es die folgende Funktion:
def build_contracts_tables(**kwargs):
print('fire')
primary_table_query = Purchase.inventory.current_contracts_totals(**kwargs)
primary_table_fields = ("total_meats", "total_value", "meat_cost")
primary_table_html = build_table([primary_table_query,], *primary_table_fields) if primary_table_query else err_str
secondary_table_query = Purchase.inventory.current_contracts(**kwargs)
secondary_table_fields = ("invoice", "supplier", "variety", "meats", "value", "meat_cost", "ship_date")
secondary_table_html = build_table(secondary_table_query, *secondary_table_fields) if secondary_table_query else err_str
return primary_table_html, secondary_table_html
Irgendwie ist der Ansicht, etwas an der Vorlage zu senden, da es einige Daten tut machen. Die Daten werden jedoch nicht sofort aktualisiert (dies wird schließlich der Fall), was bedeutet, dass ich sie nach Änderungen an der Datenbank aktualisiere, aber alte Daten bleiben bestehen. Außerdem sehe ich nie meine print
in der Konsole erscheinen.
Allerdings, wenn ich die Klassenvariablen in Funktionen umwandeln, es funktioniert ganz gut:
class ContractsView(InventoryView):
template_name = "contracts.html"
page = "Contracts"
def primary_table(self):
x,y = build_contracts_tables(**{"commodity": None})
return x
def secondary_table(self):
x, y = build_contracts_tables(**{"commodity": None})
return y
Könnte mir jemand helfen, die Regel verstehe ich in meiner ursprünglichen Versuch breche?
Ich bin nicht wirklich sicher, was Sie fragen, da Sie wissen, was das Problem ist und was die Lösung ist. Und Sie identifizieren Klassenvariablen korrekt, so dass Sie offensichtlich den Unterschied zwischen Klassen- und Instanzvariablen kennen. Was vermisst du? –
Ich habe mich nur gefragt, warum ich eine Seite laden kann, der CBV kann Daten liefern, aber anscheinend könnten es alte Daten sein, die nicht mehr wahr sind. Bleibt die ursprüngliche Klassenvariable so lange bestehen, wie der Server ausgeführt wird, nachdem er beim ersten Laden der Seite definiert wurde? –