2017-07-07 6 views
0

Ich versuche Benutzern zu ermöglichen, eine Liste von Elementen mit ihren Kategorien in der gewünschten Reihenfolge zu erstellen. Aus irgendeinem Grund erscheinen Kategorien in der Reihenfolge, die Benutzer wählen. Aber die Artikel werden in zufälliger Reihenfolge angezeigt! obwohl ich denselben Code für sie benutze!Benutzern erlauben, Reihenfolge der Liste der Elemente zu ändern

models.py

class Category(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=250) 
    order = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)]) 


class Item(models.Model): 
    user = models.ForeignKey(User) 
    category = models.ForeignKey(Category) 
    title = models.CharField(max_length=250) 
    order = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)]) 

views.py

def items_list(request): 
    category = Category.objects.filter(user=request.user).order_by("order") 
    item = Item.objects.filter(user=request.user).order_by("order") 
    return render(request, 'fav.html', {"items": item, "categories": category}) 

Jede Hilfe sehr geschätzt werden würde.

+0

Um zu bestätigen, dass Sie das richtige Problem erkannt haben, haben Sie explizit das Feld 'order' der Modelle überprüft, um sicherzustellen, dass sie richtig eingestellt wurden? Direkt über 'return' in Ihrer Ansicht:' print item.values_list ('order', flat = True) ' –

+0

Wo soll ich hinzufügen" print item.values_list ('order', flat = true) – DjangoGuy

+0

Über dem 'return 'in Ihrem Ansichtscode. Dies ist nur eine schnelle Möglichkeit, die Bestellwerte in die Konsole zu drucken, um sicherzustellen, dass sie das sind, was Sie denken, dass sie sind. –

Antwort

0

Versuch:

def items_list(request): 
    category = Category.objects.filter(user=request.user).order_by("order") 
    items = [Item.objects.filter(category=c).order_by('order') for c in category] 
    return render(request, 'fav.html', {"items": items}) 

Danach sollte u ur template.loop Artikel zweimal bearbeiten, werden die ersten Artikel werden nach Kategorien aufgeteilt werden, werden die zweiten Mal Elemente in einer Kategorie-ID geteilt werden und bestellt nach Reienfolge.

Verwandte Themen