Я некоторое время искал, но, похоже, не могу найти существующий вопрос, который охватывает это, или мне не хватает терминологии, чтобы найти его.
Я пытаюсь зафиксировать отношенияаналогично следующему примеру продавцов фруктов в моделях Django.
- Продавец А продает яблоки, груши и бананы в Лондоне, Берлине и Париже
- Продавец Б продает яблоки, груши и бананы вЛондон, но только груши в Берлине и бананы в Париже
- Продавец C продает только яблоки и бананы в Париже
То, что у меня на данный момент выглядит так:
class City(models.Model):
name = models.CharField(max_length=200)
class Region(models.Model):
name = models.CharField(max_length=200)
cities = models.ManyToManyField(City)
class Fruit(models.Model):
name = models.CharField(max_length=200)
class Coverage(models.Model):
name = models.CharField(max_length=200)
regions = models.ManyToManyField(Region)
fruits = models.ManyToManyField(Fruit)
class FruitSeller(models.Model):
name = models.CharField(max_length=200)
coverage = models.ManyToManyField(Coverage)
Это работает, но все поля ManyToMany заставляют его чувствовать себя излишне сложным и не очень элегантным.В конечном итоге мне нужно иметь возможность запрашивать такие вещи, как «Кто продает яблоки в Лондоне», «Где продаются бананы», «Какие фрукты продаёт продавец А».
Я также подумывал добавить еще одну модель «Рынок».какие внешние ключи к продавцу фруктов, региону и фрукту, которые позволили бы такие вещи, как Market.filter(Region__name='Western Europe', fruit__name='Apple').values('FruitSeller__name')
Это кажется намного проще, но я думаю, что добавление новых продавцов фруктов через страницу администратора является немного утомительным упражнением, так как я считаю, что мне нужно было бы добавлять каждое отношение индивидуально,
Какой лучший подход к этому?