Ich drucke eine Liste von Bieren, die mit einigen Filtern übereinstimmen, und die Balken, in denen jeder auf dem Hahn ist. Diese befinden sich in einer vielfachen Beziehung. Ich muss diese Liste von Balken filtern, um nur diejenigen in einem bestimmten Zustand zu zeigen.Django manytomany Feldfilterliste
Ich kann dies mit if-Anweisungen in der Vorlage erreichen, aber dann bin ich nicht in der Lage, die Kommata mit einem 'und' vor dem letzten Element (wie https://stackoverflow.com/a/3649002/6180992) zu formatieren, da ich die Länge der Liste nicht kenne .
Ich habe gedacht, drei Möglichkeiten, um dies möglich sein könnte, aber kann nicht an der Arbeit:
- die Stäbe verwandten Bereich sowie die Biere in den Ansichten Filterung
- die Liste in der Vorlage Zusammenbauen bevor er wieder Looping durch in der Vorlage
Hier sind die entsprechenden Abschnitte des Codes
models.py
class Bar(models.Model):
bar = models.CharField(max_length=200, default='FinshnPig')
state = models.CharField(max_length=200,default='NY')
def __str__(self):
return self.bar
class Meta:
ordering = ('bar','region')
class Tap(models.Model):
bar = models.ManyToManyField(Bar,default='FinshnPig')
brewery = models.CharField(max_length=200)
beer = models.CharField(max_length=200)
state = models.CharField(max_length=200, default='NY')
def __str__(self):
return self.beer
views.py
f = TapFilter(request.GET, queryset=Tap.objects.filter(state="VIC"))
Vorlage:
{% for tap in filter %}
<li>
<b>{{ tap.beer }}</b>
<em>{{ tap.brewery }}</em>
@{% for bar in tap.bar.all %}{% if bar.state == "VIC" %}{{ bar.bar }}</b>{% endif %}{% include "taplists/comma.html" %}{% endfor %}
</li>
{% endfor %}
Vielen Dank! Ich musste nur die .all in der Vorlage entfernen, aber ansonsten funktioniert das großartig! – MJHorn
Froh, dass es geholfen hat :) –