python - 过滤多对多关系
问题描述
rest-framwork
我用for制作 apidjango 3
我有一个具有多对多关系的模型。
然后,现在我想使用过滤器进行多对多
在models.py
class Text(models.Model):
t_id = models.CharField(unique=True,null=False,max_length=20)
t_text = models.TextField(null=True)
issues = models.ManyToManyField(Issue) # It is many-to-many relationship
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.t_id
class Issue(models.Model):
name = models.CharField(unique=True,max_length=255)
aka = models.CharField(max_length=2000,blank=True)
def __str__(self):
return self.name
在serializer.py
class TextFilter(filters.FilterSet):
t_text = filters.CharFilter(lookup_expr='contains') # it works
issues = filter.***Filter # How should I do here??
class Meta:
model = Text
fields = ('t_text','issues')
解决方案
默认情况下ModelMultipleChoiceFilter
用于 ManyToManyField:
class TextFilter(filters.FilterSet):
t_text = filters.CharFilter(lookup_expr='contains') # it works
issues = filter.ModelMultipleChoiceFilter(
field_name='issues__uuid',
queryset=Issue.objects.all(),
)
推荐阅读
- python - 将文件路径传输到另一个类并将项目添加到列表
- delphi - 为什么在抑制 WM_PASTE 后数据集的状态会更改为 dsEdit?
- reactjs - 使用 catch 在 redux-saga 中进行 Rest API axios 错误处理
- r - 将值与列名组合为新列
- java - 处理大量输入数据时出现 StackOverflow 错误
- vba - 基于模板的电子邮件中丢失的 HTML 格式
- docker-swarm - docker swarm 如何杀死不健康的容器
- javascript - 在网页上以展开模式在谷歌地图中显示表单
- sql - 根据数量列中的值将行拆分为多行
- json - C# - 根据 Schema 验证 json。json中哪里出现错误?