Frage

Ich habe ein Modell nicht im Gegensatz zu dem folgenden:

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True)

Alle Benutzer in einer Reihe von Fabriken arbeiten können und damit ihre Benutzerprofile haben alle eine ManyToManyField Factory.

Jetzt möchte ich eine ModelForm für Bike konstruieren, aber ich will die made_at Liste von nur Fabriken bestehen, bei dem der aktuelle Benutzer arbeitet. Die Idee ist, dass Nutzer in der Lage sein sollte, Fahrräder hinzufügen, die sie zusammengestellt haben, und geben Sie die von den Fabriken das Fahrrad bei gemacht wurde.

Wie kann ich das tun?

War es hilfreich?

Lösung

Sie Frage könnte ein Betrogene davon sein .

S. Lott 's Antwort gibt es das Ticket Ihr Problem zu lösen. Er antwortete:

  

ForeignKey wird durch django.forms.ModelChoiceField dargestellt, die eine ChoiceField ist, deren Entscheidungen sind ein Modell QuerySet. Siehe die Referenz für ModelChoiceField.

     

Also, stellen eine QuerySet auf das queryset Attribut des Feldes. Hängt davon ab, wie Sie Ihre Form gebaut wird. Wenn Sie eine explizite Form bauen, werden Sie Felder direkt benannt haben.

     

form.rate.queryset = Rate.objects.filter(company_id=the_company.id)   Wenn Sie die Standardmodelform Objekt nehmen, form.fields["rate"].queryset = ...

     

Dies wird ausdrücklich in der Ansicht getan. Kein Hacking um.

Andere Tipps

versuchen, so etwas wie dies in der Ansicht

form  = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)

ändern Sie das Werk queryset, so dass sie das Werk identifiziert, die der Benutzer arbeitet an.

Nowaday, sollten Sie verwenden:

    form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
        'alumno',
        'alumno__estudiante',
        'alumno__estudiante__profile',
        'item'
    )
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top