2017-07-09 2 views
0

Wenn ich so etwas wieWie kann ich beim Erstellen eines Datenbankmodells in Django Felder erstellen, die nur einen Monat bzw. ein Jahr akzeptieren?

year_published = models.DateField() 

dann muß ich in einem Tag und Monat eingeben, zusätzlich zu einem Jahr. Aber in diesem Bereich möchte ich nur ein Jahr eingeben. Ebenso möchte ich nur einen Monat eingeben in

month_published = models.DateField() 

Irgendeine Idee, wie man das macht?

+0

Nun, Sie können das nicht mit DateField tun Sie brauchen CharField zu tun, was Sie versuchen zu tun – Exprator

+0

Danke, aber ich möchte in der Lage sein, die Publikationen nach Monat und Jahr zu sortieren, und ich kann das nicht tun, wenn die Daten sind ein CharField. Ich könnte ganzzahlige Felder verwenden, aber ich frage mich, ob es eine einfachere oder elegantere Lösung gibt. Das Problem besteht darin, dass Artikel (die ich in die Datenbank lege) tendenziell nur Veröffentlichungsdaten in Monaten und Jahren haben, aber nicht in Tagen. – henrich

Antwort

0

Wenn Sie nur das Jahr speichern, wie sortieren Sie nach Monat und Datum? Speichern Sie stattdessen das vollständige Datetime-Objekt oder teilen Sie das vollständige Datum in drei Felder auf. Wie bereits erwähnt, sind dies normalerweise Char-Felder, können aber Int sein und können zurück zum Datum konvertiert werden, um zu sortieren und zu vergleichen. Siehe:

How to convert integer into date object python?

Oder einfach speichern das vollständige Datum nativ und erhalten dann die Stücke Sie es benötigen, wie Sie es brauchen. Sie können die Pendulum Package überprüfen, die viel mehr Optionen für Datumsoperationen eröffnet.

Verwandte Themen