Ich habe zwei Modelle wie folgt:Django Sortieren ManyToMany Feld in einem Nicht signifikanten Auftrag
class Stop(models.Model):
"""
Showing bus stops in İzmir.
"""
code = models.PositiveIntegerField(
unique=True,
primary_key=True,
verbose_name="Code"
)
label = models.CharField(
null=False,
blank=False,
max_length=64,
verbose_name="Label"
)
coor = ArrayField(
models.FloatField(),
size=2,
verbose_name="Coordination"
)
class Meta:
verbose_name = "Stop"
verbose_name_plural = "Stops"
ordering = ["label"]
def __str__(self):
return self.label
class Route(models.Model):
"""
Bus routes of İzmir.
"""
code = models.PositiveSmallIntegerField(
unique=True,
primary_key=True,
verbose_name="Code"
)
stops = models.ManyToManyField(
Stop,
null=True,
blank=True,
related_name="routes",
verbose_name="Stops"
)
terminals = ArrayField(
models.CharField(
null=False,
blank=False,
max_length=32,
),
size=2,
default=[],
verbose_name="Terminals"
)
departure_times = ArrayField(
ArrayField(
models.TimeField(
null=False,
blank=False
),
null=True,
default=[]
),
default=[],
size=6,
verbose_name="Departure Times"
)
class Meta:
verbose_name = "Route"
verbose_name_plural = "Routes"
ordering = ["code"]
def __str__(self):
return "{}: {} - {}".format(str(self.code), self.terminals[0], self.terminals[1])
Wie Sie sehen können, Route
hat ein ManyToManyFields
die Stop
Instanzen nimmt.
Ich habe die Instanzen mit einem Skript, das es ein paar Webseiten ausrangiert, es scheint, ich werde Crontab verwenden, um sie auf dem neuesten Stand zu halten. In den Daten, die ich schabe, sind Stop
Objekte geordnet. Die Sache ist, dass es keinen signifikanten Filter gibt, um z.B. Eine Stop
Instanz kommt nach einer anderen.
Django (oder Django Rest Framework) gibt Stop
Instanzen von Route
Instanz in alphabetischer Reihenfolge, z.
{
"code": 285,
"terminals": [
"EVKA 1",
"KONAK"
],
"stops": [
40586,
40633,
12066,
40645,
40627,
40647,
40588,
40592,
40623,
40016,
40506,
40508,
40528,
40462,
40631,
40014,
40619,
40530,
12060,
40661,
40504,
40488,
40653,
40590,
40512,
40464,
10240,
10036,
12068,
40514,
40510,
40658,
40002,
40649,
12070,
40004,
40010,
40656,
12064,
40614,
40012
],
...
}
In der stops[0]
gibt eine Stop
Instanz mit A
und Sorten wie der Anfang.
Also, gibt es eine Möglichkeit, wie eine list
in Python zu bestellen? Wie, es gibt keinen wichtigen Punkt, du fügst einfach an das Ende an und gibst es zurück.
Environment
- Python 3.5.1
- django 1.9.7
- djangorestframework 3.3.3
- psycopg2 2.6.2
- postgresql 9,5
Wenn Sie auf den 'Stop' Modell einen Zeitstempel setzen, dann könnte man auf diesem Zeitstempel basiert bestellen . –
Die Sache ist, eine "Stop" -Instanz könnte zu mehr als einem Route-Objekt gehören. Selbst wenn ich einen Timestamp einsetze, würde sich das Feld "Timestamp" einer "Stop" -Instanz ändern, wenn es darum geht, eine weitere "Route" -Instanz zu erstellen. –