【发布时间】:2021-05-02 16:25:49
【问题描述】:
我有下一个数据库结构:
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 用于定义该艺术家是否是该艺术品的主要特征标志。
在ArtworkNode我想定义main_artist字段:
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
然后在ArtworkService 我可以访问艺术艺术家,例如:
class ArtworkInfo(object):
@property
def main_artist(self):
artist = self.artwork.artists.first()
return artist
有什么方法可以过滤ArtworkInfo 上的艺术家并只获取一位主要艺术家或访问ArtistArtwork 模型中的值?
【问题讨论】:
标签: python django graphql graphene-python