Ho due modelli che sono collegati da un altro modello attraverso una relazione molti a molti.Tastypie, filtro da molte a molte relazioni
Ecco i modelli stessi
class Posts(models.Model):
id = models.CharField(max_length=108, primary_key=True)
tags = models.ManyToManyField('Tags', through='PostTags')
class Tags(models.Model):
id = models.CharField(max_length=108, primary_key=True)
posts = models.ManyToManyField('Posts', through='PostTags')
class PostTags(models.Model):
id = models.CharField(max_length=108, primary_key=True)
deleted = models.IntegerField()
post_id = models.ForeignKey('Posts', db_column='post_field')
tag_id = models.ForeignKey('Tags', db_column='tag_field')
e le risorse tastypie
class PostsResource(ModelResource):
tags = fields.ToManyField('django_app.api.TagsResource', 'tags', null=True)
class Meta:
queryset = Posts.objects.filter(deleted=0)
resource_name = 'posts'
class TagsResource(ModelResource):
posts = fields.ToManyField('django_app.api.PostsResource', 'posts', null=True)
class Meta:
queryset = Tags.objects.filter(deleted=0)
resource_name = 'tags'
Sul tavolo posttags c'è una bandiera cancellata, è possibile solo risultati rendimento collegato quando la bandiera eliminato nel PostTags è 0?
Ho provato l'attributo di filtro this in tasteypie ma sembra preoccuparsi solo del flag nella tabella collegata (ad esempio tag o post) non della tabella effettiva che esegue il collegamento.
Hai provato 'set di query = Posts.objects.filter (posttags__deleted = 0)' a Meta per ogni risorsa? – astevanovic
È strano, quella metà funziona. Come se stampassi queryset.query, sta facendo l'istruzione SQL corretta (come nel punto in cui è stata cancellata = 0). Ma i risultati restituiti tramite la richiesta API sembra ancora ignorare la bandiera. – Shane