2017-07-29 6 views
0

Ich habe Probleme, den Queryset-Filter mit meinen Modellen zu verwenden. Es ist ein Steuerelement für Beiträge in Gruppen.django Queryset-Filter Fremdschlüssel

Dies ist mein Code:

class Post(models.Model): 
    title = models.CharField(max_length=120) 
    content = models.TextField() 


class Group(models.Model): 
    title = models.CharField(max_length=200) 
    url = models.URLField(unique=True) 


class Control(models.Model): 
    published = models.DateField(auto_now=False, auto_now_add=False) 

    group = models.ForeignKey(Group, on_delete=models.CASCADE) 
    post = models.ForeignKey(Post, on_delete=models.CASCADE) 

Ich versuche, alle Beiträge von einer Gruppe mit dem Titel „Titel“ zu erhalten:

queryset_list = Control.objects.filter(group__control="title") 

Meine Modelle könnten nit richtig sein, ich m neu dazu. Irgendwelche Hilfe?

+0

Warum haben Sie das 'Control'-Modell? Ist es möglich, dass eine "Post" in einer Gruppe und nicht in einer anderen veröffentlicht wird? –

+0

Ja, ich könnte verschiedene Beiträge für bestimmte Gruppen haben. –

Antwort

1

Vielleicht ist es Tippfehler?

class Group(models.Model): 
    title = models.CharField(max_length=200) 
    url = models.URLField(unique=True) 

    posts = models.ManyToManyField('Post', through='Control') 

Die beiden anderen Modelle gleich bleiben, aber jetzt können Sie leicht Beiträge für eine Gruppe greifen:

queryset_list = Control.objects.filter(group__title="title") 
#            ^^^^^^ 
posts_title = queryset_list.values('post__title') 
1

Zunächst sollten Sie ein ManyToManyField auf Group (docs) in

posts = Group.objects.get(title='some title').posts.all() 
+0

Ich habe diesen Fehler: Datei "", Zeile 678, in exec_module Datei "", Zeile 205, in _call_with_frames_removed Datei "/ home/renan/django/social-posts /src/control/models.py ", Zeile 21, in Klasse Control (models.Model): Datei" /home/renan/django/social-posts/src/control/models.py ", Zeile 24, in Control group = models.ForeignKey (Gruppe, on_delete = models.CASCADE) NameError: Name 'Group' ist nicht definiert –

+0

Angenommen, Sie haben Group unter Control verschoben? Setzen Sie 'Group' in Anführungszeichen:' group = models.ForeignKey ('Group', on_delete = models.CASCADE) ' –

+0

Nun, es hat auch nicht funktioniert. Dies ist mein Code (ohne die Viele-Mann-Beziehung): https://bitbucket.org/renanbs/social-posts. –