Complicated relationships

23 views
Skip to first unread message

Mlati Mudan

unread,
May 23, 2016, 8:19:36 AM5/23/16
to Django users
I read the django documentation for a simple many-to-many relationship and I get it, but I'm stuck with this kind of complexity. 

Each restaurant employs many chefs and serves many dishes. 
Each chef can work for many restaurants and prepare many dishes. 
Each dish can only be prepared by a single chef but it can be on the menu of many restaurants. 

How do I connect these models: dish, chef, restaurant?




Jani Tiainen

unread,
May 23, 2016, 8:47:02 AM5/23/16
to django...@googlegroups.com
Something like....

Chef:
  # Nothing special here, reverse relations will be done automatically

Dish:
   chef = ForeignKey(Chef)

Restaurant:
   chefs = ManyToMany(Chef)
   dishes = ManyToMany(Dish)


Of course, you need to build something to make sure that restaurant doesn't serve dishes that it's chefs can't make.
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/01e504a5-bbc6-4cee-96e2-158a2803d5b7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Gergely Polonkai

unread,
May 23, 2016, 6:35:40 PM5/23/16
to Django users

I would make Restaurant.dishes a @property that returns all dishes the restaurant's chefs can make:

return Dish.objects.filter(chef__restaurant=self)

Reply all
Reply to author
Forward
0 new messages