Ich habe eine Django App, die eine Reihe von Postleitzahlen mit Tags hat. Ich möchte eine Seite erstellen, auf der alle Posts nach Status angezeigt werden, ich bin mir jedoch nicht sicher, wie ich vorgehen soll. Ich habe eine ZipCode-Tabelle, aber mein Post.Zipcode-Feld ist nicht damit verwandt (hauptsächlich weil es Benutzer eingegeben wird, und erlaubt Reißverschlüsse, die nicht in der DB oder von außerhalb der USA sind).Django: Liste der Datensätze nach Staat mit Postleitzahl
Meine relevanten Modelle:
class Post(models.Model):
body = models.TextField()
zipcode = models.CharField(max_length=5)
class ZipCode(models.Model):
zipcode = models.CharField(max_length=5)
city = models.CharField(max_length=64)
statecode = models.CharField(max_length=2)
statename = models.CharField(max_length=32)
latitude = models.FloatField()
longitude = models.FloatField()
In meinem Django Ansicht Ich würde gerne den "Zustand" Parameter nehmen, die in meiner URL-Muster übergeben wird und etwas tun, wie folgt aus:
def posts_by_state(request, state):
posts = Post.objects.filter(zipcode__statecode=state)
...
Leider ist mein Post.zipcode Feld kein Fremdschlüssel ZipCode so dass ich diesen Fehler, wenn ich versuche:
FieldError at /post/state/VT/
Join on field 'zipcode' not permitted.
Jeder hat einen Hinweis, wie ich ein Abfrage-Set erstellen soll, das alle Beiträge für einen angeforderten Status zusammenfasst? Vielen Dank im Voraus.
Wenn Sie Ihr Modell ändern können, ist es möglicherweise schneller, dem Post-Modell ein Zustandsfeld hinzuzufügen. Wenn ein Post erstellt wird, suchen Sie schnell in der ZipCode-Tabelle nach, um den Status zu erhalten. – Seth
Danke Seth, ich habe gerade darüber nachgedacht. Irgendwann werde ich PLZ-basierte Radius-Lookups mit Lat und Long machen wollen und ich werde das gleiche Problem haben. Ich frage mich, ob ich Post.zipcode einen echten ForeignKey machen muss und was das bedeutet, wenn Benutzer einen Beitrag mit einer Zip-Datei versehen wollen, die nicht in meiner ZipCode DB ist. – mitchf