Фильтр набора запросов Django для ManyToMany с настраиваемыми полямиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Фильтр набора запросов Django для ManyToMany с настраиваемыми полями

Сообщение Anonymous »

У меня есть следующие модели Django Block и CustomCondition, которые связаны друг с другом посредством пользовательской связи ManyToMany, которая имеет пользовательские поля и пользовательскую таблицу БД:
< pre class="lang-py Prettyprint-override">

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

from django.db import models

class CustomCondition(models.Model):
name = models.CharField("custom condition name")

class Meta:
db_table = "custom_conditions"

def __str__(self) -> str:
return self.name

class BlockCondition(models.Model):
block = models.ForeignKey(
"Block",
related_name="block_condition_as_block",
on_delete=models.CASCADE,
)
custom_condition = models.ForeignKey(
CustomCondition,
related_name="block_condition_as_custom_condition",
on_delete=models.CASCADE,
)
choice = models.CharField(
"choice",
choices=[
("NO_CONDITION", "No condition"),
("ACTIVATED", "Activated"),
("NOT_ACTIVATED", "Not activated"),
],
default="NO_CONDITION",
)

class Meta:
db_table = "block_conditions"

def __str__(self) -> str:
return self.custom_condition.name

class Block(models.Model):
name = models.CharField("name", null=False)
block_conditions = models.ManyToManyField(
CustomCondition,
through="BlockCondition",
blank=True,
default=None,
related_name="blocks_as_block_condition",
)

class Meta:
db_table = "blocks"
Теперь я хочу фильтровать блоки для каждого имени условия, когда это имя условия активировано:

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

for c in CustomCondition.objects.all():
if c.name:
filtered_blocks = Block.objects.filter(
block_conditions__custom_condition__name=c.name
)
filtered_blocks = filtered_blocks.filter(
block_conditions__choice__in=["ACTIVATED", "NO_CONDITION"]
)
print(filtered_blocks)
Но я получаю следующую ошибку Django:

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

django.core.exceptions.FieldError: Unsupported lookup 'custom_condition' for ForeignKey or join on the field not permitted.
Что я здесь делаю не так?

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

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

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

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

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

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

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