In meiner Datenbank habe ich einige meiner Fehler gespeichert, so dass ich sie problemlos zwischen Ansichten senden kann. Hier ist eine meine models.py:Objekte in Wörterbuch in Django speichern
class Errors(models.Model):
error_number = models.IntegerField(primary_key=True)
error_message = models.CharField(max_length=45)
status = models.BooleanField(default=0)
datetime = models.DateTimeField(auto_now=True)
Ich möchte Fehler in ein Wörterbuch legen, damit ich es nach Vorlage weitergeben kann. Ich möchte, dass dies nur passiert, wenn der Status True/1 ist. Ist die Ansicht korrekt?
Wie es jetzt ist, denke ich, dass es ein schlechtes Programm ist, da ich newtwork beim Aufrufen von Errors.objects.all() überflute, aber ich weiß nicht anders, wie man die for-Schleife implementiert.
def index(request):
err = {'error_numbers':[], 'error_messages': [], 'datetime':[], 'test':[]}
warnings = Errors.objects.all()
for warning in warnings:
if Errors.objects.filter(status='1'):
err['error_numbers'].append(warning.error_number)
err['error_messages'].append(warning.error_message)
err['datetime'].append(warning.datetime)
return render(request, "index.html", err)
Darf ich fragen auch, wie könnte ich Gruppe alle Daten von gleichen Fehler heißt Fehlernummer, Fehlermeldung und Datumzeit in Vorlage zusammen angezeigt werden? (P. S. Ich weiß, dass die Frage nach Code in SO ist ein No-No ist also nur optional für jeden, der bereit ist, einige nützliche Website oder Beispiel zu teilen).
Beispiel (wie ich am moemnt verwende) bellow druckt gar nichts.
<ul>
{% for key, value in err.iteritems %}
<li>{{key}: {{value}}</li>
{% endfor %}
</ul>
Viele Dinge, die Sie genannt haben, haben mich über meinen Code nachdenken lassen. Ich habe das meiste behoben, aber es werden immer noch keine Daten an die Site gesendet. Ich habe die Quelle überprüft und es war leer, wo diese Daten sein sollten. Sonst in diesem Fall habe ich BooleanField verwendet, so wie Sie mich korrigiert haben, konnte ich "warning.status" verwenden, aber was, wenn Charfield verwendet würde und ich würde basierend darauf iterieren? Zum Beispiel: if (warning.error_message__startswith = 'Device') .. wäre das eine gute if-Anweisung? – narn
'wenn Warnung.error_message.startswith ('Device'): 'würde funktionieren. Oder Sie können sie an erster Stelle herausfiltern: 'Error.objects.filter (error_message__startswith = 'Device')'. Oder in Ihrem Fall: 'Error.objects.filter (status = True)'. Verwenden Sie stattdessen "err.items". Dies ist die Django-Vorlagensyntax, nicht Python. – username
Ok danke, werde meinen Code entsprechend anpassen. Leider hat 'err.items' das Problem nicht behoben. Irgendwelche Vorschläge wie könnte ich das debuggen? (Es gibt genau 1 Reihe in der Datenbank, die diese Bedingung ATM erfüllt, also bin ich sicher, dass etwas ausgegeben werden sollte). – narn