2017-07-08 1 views
0

Ich habe ein Modell namens MenuItems erstellt, mit dem ich alle Elemente eines Restaurants auf der Speisekarte eingeben kann, später werde ich diese im Frontend verwenden. Ich habe auch einen Modellnamen MenuGrouping erstellt, so dass ich am Front-End Bootstrap-Registerkarten den group_title anzeigen lassen kann und unter jedem die Elemente in dieser Gruppe anzeigen. Welches Feld muss ich im MenuItems-Modell hinzufügen, um es einer Gruppe zuzuordnen? Ich habe versucht, group = models.ForeignKey (MenuGrouping) zu verwenden, aber dann stoße ich auf das Problem, jedes Element in der spezifischen Gruppe anzuzeigen.Wie kann ich Gruppierung in Django durch Modelle einrichten?

Models.py:

class MenuItems(models.Model): 

    menu_item_title = models.CharField(max_length=256) 
    menu_item_description = models.TextField() 
    menu_item_price = models.DecimalField(max_digits=4, decimal_places=2) 

    customer_favorite = models.BooleanField(default=False) 
    is_on_menu = models.BooleanField(default=True) 

class Meta: 
    ordering = ('menu_item_title',) 


class MenuGrouping(models.Model): 
    group_title = models.CharField(max_length=256) 

Gibt es eine Beziehung, die ich im MenuGrouping Modell hinzufügen kann, dass ich mehr MenuItems zuordnen kann?

Vielen Dank im Voraus!

Antwort

1

Wenn ich Dich richtig verstehe, dass Sie Gruppen wie Trinken, Essen zu machen versuchen, Wüste und ... dann ist es hier:

Jedes Element nur in einer Gruppe sein kann (ich meine Soda ist ein Getränk, und es kann nicht Essen sein und etc). Also, was Sie hier tun müssen, ist ein Feld zu MenuItems Modell hinzufügen.

Ihre MenuItems sollte wie folgt sein:

class MenuItems(models.Model): 

    menu_item_title = models.CharField(max_length=256) 
    menu_item_description = models.TextField() 
    menu_item_price = models.DecimalField(max_digits=4, decimal_places=2) 

    customer_favorite = models.BooleanField(default=False) 
    is_on_menu = models.BooleanField(default=True) 
    group = models.ForeignKey(MenuGrouping) 

Nun ist diese in Ihrer Vorlage zu verwenden, zuerst die Gruppen im Hinblick bekommen und sie dann senden Template:

{% for group in groups %) 

    # add your tabs or just print the group name. or how ever you want. 

    Group {{ group.group_title }}: 

    # and now you can list the items in this group here 

    {% for item in group.menuitems_set.all %} 
     Title is: {{ item.menu_item_title }} 
     Price is: {{ item.menu_item_price }} 
     ... 
    {% endfor %} 
{% endfor %} 

Wenn Sie Wenn Sie alle Elemente an einer anderen Stelle als in Gruppen oder auf andere Weise aufgelistet haben, senden Sie die Elemente einfach an die Vorlage. Hier

ist die Viele One Beziehung Dokumentation: Many-to-one relationships

Sie können auch eine m2m Bezug auf MenuGrouping hinzufügen und Elemente jeder Gruppe hinzufügen, aber dann ein Element in mehreren Gruppen sein können und für ein Restaurant-Menü Ich kann nicht sehen, wie das passieren könnte.

Verwandte Themen