Модель запроса с полем «многие ко многим» с пустым списком в качестве входных данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Модель запроса с полем «многие ко многим» с пустым списком в качестве входных данных

Сообщение Anonymous »

У меня есть модель, содержащая поле «многие ко многим»:

Код: Выделить всё

class Transaction(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, editable=False, primary_key=True)
transaction_date = models.DateField(null=False, blank=False)
transaction_category = models.ForeignKey(Category, on_delete=models.PROTECT, null=False, blank=False)
customer_vendor = models.ForeignKey(CustomerVendor, on_delete=models.PROTECT, blank=False, null=False)
account = models.ForeignKey(Account, on_delete=models.PROTECT, blank=False, null=False)
reimbursable = models.BooleanField()
tag = models.ManyToManyField(Tag, blank=True)
amount = models.DecimalField(max_digits=12, decimal_places=2, null=False, blank=False)
description = models.CharField(max_length=255, null=False, blank=False)
У меня есть запрос, который позволяет получить транзакции:

Код: Выделить всё

Transaction.objects.filter(transaction_category__master_category__category_type="Income", transaction_date__range=[start_date, end_date]).filter(exclude_reimbursable).order_by().annotate(month=ExtractMonth("transaction_date"), year=ExtractYear("transaction_date")).values("month", "year").annotate(month_year=Concat("month", V(" "), "year", output_field=CharField()), month_total=Sum("amount")).values("month_year", "month_total").order_by("year", "month")
Я пытаюсь добавить в запрос тег (поле «многие ко многим»). Из веб-приложения я получаю список всех тегов, выбранных пользователем. Список также может быть пустым и содержать 0 тегов.
Я пробовал использовать в запросе tag__in=tags, но если пользователь не выбирает ни одного тега, это не работает. . Если пользователь не выбирает какие-либо теги, мы должны относиться к этому так, как будто любая транзакция может быть возвращена, даже если для нее не выбрано ни одного тега.
Я также пробовал использовать Q(tag__in=tags ) | Q(tag=None), чтобы получить транзакции, у которых есть какой-либо тег ИЛИ нет тега, что должно делать то, что я хочу, но всегда возвращает пустой набор запросов.

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-as-input
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»