2017-08-07 6 views
2

Ich möchte einige Daten als Liste in einem Django-Modell speichern und kann es nicht richtig gemacht werden. Also versuchte ich zuerst last_visits = CharField(....) und schrieb eine Funktion, um Werte zu diesem Charfield hinzuzufügen. Dies funktionierte nicht, da ich keine richtige Liste erstellen konnte. Ich fand this (JSONField-Modellattribut für Listen), aber das Speichern von Python-Zeit in JSON macht Probleme, da Json es nicht richtig serialisieren kann und es in str konvertieren würde Probleme, da ich es später zurückkonvertieren müsste.Datum/Zeit in einer Liste in Modell speichern Django

Meine Frage ist also: Gibt es eine einfache Möglichkeit, mehrere Daten (Liste/Array) zu speichern?

someList = list() 
global someList 
def logins(self): 
    someList.append(datetime.datetime.now()) 
    return someList 

Das ist eine Funktion, die ich schrieb und es funktioniert gut, aber die Werte werden nicht gespeichert. Wie würde ich die alten Werte der Liste hinzufügen und eine neue in ein Modellattribut (Charfield/textField/JSONField) hinzufügen?

Ich habe versucht, es wie folgt aus:

#"last_visit" is the model attribute 
someList.append(self.last_visit) 
self.last_visit += json.dumps(datetime.datetime.now()) 
self.last_visit = someList 
self.last_visit.append(datetime.datetime.now()) 
self.last_visit.save() 

aber keiner von ihnen arbeitete. Bitte beachten Sie, dass ich nicht alle auf einmal verwendet habe. Ich wollte nur einen Überblick geben, was ich versucht habe.

Antwort

2

Ich denke nicht, dass das Speichern einer Liste von Datum als Char oder Textfeld eine gute Lösung ist. Warum verwenden Sie keine Modellbeziehungen? Ich zeige Ihnen ein Beispiel für ein Modell mit einem Event-Objekt, das mehrere verwandte Daten enthält. Die Verwendung eines DateFields ist auch praktisch zum Filtern !!

class Event(models.Model): 

    name = models.CharField(max_length=255, unique=True, blank=False, null=False) 


class EventData(models.Model): 

    event = models.ForeignKey(Event, on_delete=models.CASCADE) 
    date = models.DateField(default=None, blank=False, null=False) 
+0

In 'EventData', hast du meine' ForeignKey (Ereignis, ... '? – jcfollower

+0

Ja sorry, bearbeite ich meine Antwort – Andrea

+0

Dank für die Antwort, aber ich weiß wirklich nicht, was soll im mit tun Es fühlt sich ein bisschen Kopie eingefügt aus irgendeinem Code, aber nicht konfiguriert für meine Bedürfnisse und ja, ich weiß, was ein ForeignKey ist. "Ich denke nicht, dass das Speichern einer Liste von Datum als Char oder Textfeld ist ein guter Lösung "deshalb habe ich die Frage gestellt ... – hansTheFranz

Verwandte Themen