I have the next database structure:
class Artwork():
id = models.IntegerField(_('id'), primary_key=True)
artists = models.ManyToManyField('gql_service.Artist',
through='gql_service.ArtistArtwork')
class ArtistArtwork(models.Model):
artist = models.ForeignKey('gql_service.Artist')
artwork = models.ForeignKey('gql_service.Artwork')
is_main_artist = models.BooleanField(default=False)
class Artist(models.Model):
id = models.IntegerField(_('id'), primary_key=True)
is_main_artist
feature flag used to define is this artist main for this artwork.
In ArtworkNode
I want to define main_artist
field:
class ArtworkNode(PrimaryKeyMixin, DjangoObjectType):
main_artist = graphene.Field('escher.gql_service.schema.artist_node.ArtistNode')
def resolve_main_artist(self, _):
return ArtworkInfo(self).main_artist
And then in the ArtworkService
I can access artwork artists like:
class ArtworkInfo(object):
@property
def main_artist(self):
artist = self.artwork.artists.first()
return artist
Is there any way I can filter artists on ArtworkInfo
and get only one main artist or access values in ArtistArtwork
model?
question from:
https://stackoverflow.com/questions/65942812/get-all-related-objects-with-filter-on-through-model 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…