2016-06-12 25 views
5

Pasek ma ForeignKey do Foo, wiele Bar do jednego Foo. Korzystanie z formularzy w Django, foreign key defaults to a select list input.drop down wybór klucza obcego w Django Rest Framework

Chciałbym tej funkcji w Django Rest Framework, najpierw dla Browsable API, a następnie dla Renderer HTML szablonu. Mam ponad nested relations in the docs i widziałem także this related question, ale to nie ma sensu. Przynajmniej to sprawia, że ​​myślę, że powinienem obserwować rozwijane zachowanie, podobnie jak akcje Django Forms.

ostatecznie Chcę sposób pozwoli nam wybrać istniejący Foo przy tworzeniu/aktualizacji Bar Wierzę, że mogę to zrobić z TemplateHTMLRenderer ręcznie crafting formularz, który zmienia pól formularza do pełnych danych JSON, czyli nowy bar to wskazuje na istniejące Foo, zakładając, że piszę aktualizację i tworzę metody na pasku. Ale to brzmi dla mnie tak, jakbym gdzieś tęsknił za "łatwą drogą".

class BarSerializer(serializers.ModelSerializer): 

    # This shows Foo.foo within serialzied Bar JSON: 
    # I suspect I am missing something with the relation that would allow me to select foo from a list 
    foo = serializers.SlugRelatedField(many=False, read_only=True,slug_field="foo") 


    class Meta: 
      model = Bar 
      fields = ('foo','some_value','another_value') 


class FooSerializer(serializers.ModelSerializer): 
    owner = serializers.ReadOnlyField(source='owner.username') 

    # This shows the Bar serialized within the Foo JSON i.e. nested serialization 
    bars = BarSerializer(many=True); 

    # reverse rel: related_name='bars' in Foo model 
    class Meta: 
     model = Foo 
     # 'bars' is the related name pointing from bar to foo 
     fields = ('bars', 'foo', 'owner') 

Rozumiem, że aby zapisać zagnieżdżone dane, mój serializer wymaga aktualizacji i utworzenia. Wdrażam to teraz. Ale nie mogę się skupić, co zrobić, aby DRF wypełnił wybrane wejście z pewną reprezentacją opcji Foo?

Brakuje mi czegoś oczywistego, tak? Oto RTFM (ponownie) downvotes:/

Odpowiedz

1

To było pięć miesięcy temu, więc prawdopodobnie masz już odpowiedź, ale moje wyszukiwanie google doprowadziło mnie tutaj, aby zacząć.

Więc okrywać lub inni zdarzyć przyjść tutaj odpowiedź, że znalazłem pracował najlepiej było:

Django admin foreign key dropdown with custom value

Zasadniczo trzeba powiedzieć to w jeden z dwóch sposobów, które pola/pól do wykorzystania jako ciąg rozwijanego menu.