У меня есть следующие модели:Многих ко многим Исключены по нескольким объектам
class Deal(models.Model):
date = models.DateTimeField(auto_now_add=True)
retailer = models.ForeignKey(Retailer, related_name='deals')
description = models.CharField(max_length=255)
...etc
class CustomerProfile(models.Model):
saved_deals = models.ManyToManyField(Deal, related_name='saved_by_customers', null=True, blank=True)
dismissed_deals = models.ManyToManyField(Deal, related_name='dismissed_by_customers', null=True, blank=True)
То, что я хочу сделать, это получить предложения для клиента, но я не хочу включать сделки, которые они увольняются.
У меня возникли проблемы, обертывая мою голову вокруг отношений «многие-ко-многим», и мне не повезло выяснить, как это сделать. Я предполагаю, что я должен использовать исключение для Deal.objects(), но все примеры, которые я вижу для исключения, исключают один элемент, а не то, что составляет несколько элементов.
Когда я наивно пытался просто:
сделок = Deal.objects.exclude (customer.saved_deals) .all()
Я получаю ошибку: "объект 'ManyRelatedManager' не итерацию"
Если я говорю:
сделок = Deal.objects.exclude (customer.saved_deals.all()) все()
я получаю "Слишком много значений для распаковки" (хотя я чувствую. Я должен отметить, что в базе данных сейчас всего 5 сделок и 2 клиента)
Мы (наш клиент) полагаем, что в будущем у него будут тысячи клиентов и десятки тысяч сделок, поэтому я бы как бы поддерживать производительность как можно лучше. Если эта настройка неверна, я хотел бы узнать лучший способ.
Кроме того, я бегу Джанго 1.5, как это развертывается на App Engine (с помощью CloudSQL)
Где я буду неправильно?