【发布时间】:2021-01-15 19:14:47
【问题描述】:
我试图在类似的问题中找到答案,但没有一个符合我的期望。
我有 2 个模型:
class Artist(models.Model):
name = models.CharField(max_length=255)
music_type = models.CharField(max_lenght=50)
def __str__(self):
return self.name
class Event(models.Model):
event_name = models.CharField(max_length=255)
...
artists = models.ManyToManyField(Artist)
def __str__(self):
return self.event_name
我也有serializers.py文件:
class EventSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = '__all__'
class ArtistSerializer(serializers.ModelSerializer):
events = EventSerializer(source='event_set', many=True)
class Meta:
model = Artist
fields ='__all__'
ArtistSerializer 中的 event 允许我返回艺术家参与的所有活动。
现在,对于每个艺术家,如果他们曾经参加过同一活动,我想获取所有艺术家的列表。
例如,我有 5 个艺术家 (A1...A5) 和 3 个事件 (E1...E3) 在事件 1 中:[A1,A3]
在事件 2 中:[A3,A4,A5,A2]
在事件 3 中:[A2,A3]
So for A3 I would like to get list [A1,A4,A5,A2]
For A1: [A3]
For A2: [A3,A4,A5]
不幸的是,我在创建这个查询时遇到了很大的问题,因为 SQL 查询和 ORM 机制在这种情况下看起来更加复杂。有人可以帮我解决这个问题或给出解决方法的提示吗?
如果需要,我会分享更多代码
【问题讨论】:
标签: django-models django-rest-framework django-queryset