Я пишу приложение для магазина.Скажем, The Store A, Store A может иметь несколько пользователей, и каждый пользователь может принадлежать нескольким магазинам.Тем не менее, у каждого магазина есть Продукты, и каждый Продукт имеет связанные с ними размеры.
class Variation(models.Model):
product = models.ForeignKey("Product")
size = models.CharField(choices=SIZES, max_length=5)
pid = models.CharField(unique=True, max_length=100, verbose_name="Product ID")
id_type = models.CharField(max_length=5, choices=ID_TYPES, default="UPC")
price = models.DecimalField(max_digits=5, decimal_places=2)
store = models.ForeignKey("Store")
class Meta:
unique_together = ("store", "pid")
class Product(models.Model):
item = models.CharField(max_length=100, verbose_name="Parent SKU", help_text="reference# - Color Code")
# Google docs sp key
store = models.ForeignKey(Store)
class Store(models.Model):
name = models.CharField(max_length=100)
store_id = models.PositiveIntegerField(unique=True)
admins = models.ManyToManyField(User)
objects = StoreManager()
def __unicode__(self):
return self.name
, поэтому мне пришлось написать собственный менеджер для Продукта, чтобы отфильтровать все продукты по магазину и переопределить метод набора запросов для этого.класс администратора модели, и сделать это для КАЖДОГО атрибута, принадлежащего указанному магазину.Таким образом, в основном мой вопрос заключается в том, есть ли способ отфильтровать все атрибуты, относящиеся к магазину для каждого магазина, например, товары, билеты, варианты
РЕДАКТИРОВАТЬ Это менеджер продукта до сих пор
class ProductManager(models.Manager):
def active(self, **kwargs):
return self.filter(in_queue=False, **kwargs)
def by_store(self, store=None, **kwargs):
return self.filter(store__id__exact=store, **kwargs)
def from_user(self, request):
qs = self.model.objects.none()
for store in request.user.store_set.all():
qs = qs | store.product_set.filter(in_queue=False)
return qs
В общем, для отображения продуктов на странице списка изменений я использую метод from user, который возвращает все продукты, доступные зарегистрированному пользователю