2016-06-12 22 views
5

Bar có ForeignKey to Foo, nhiều Bar cho một Foo. Sử dụng Biểu mẫu ở Django, foreign key defaults to a select list input.thả xuống lựa chọn khóa ngoại ở Django Rest Framework

Tôi muốn chức năng này trong khung Django Rest, trước tiên cho API có thể duyệt, sau đó cho Trình tạo mẫu HTML. Tôi đã hơn nested relations in the docs và cũng đã thấy this related question, nhưng nó không có ý nghĩa. Ít nhất nó làm cho tôi nghĩ rằng, tôi nên được nhìn thấy hành vi thả xuống giống như cổ phiếu Django Forms.

cuối cùng tôi muốn có một cách để chúng ta hãy chọn một Foo hiện khi tạo/cập nhật Bar Tôi tin rằng tôi có thể làm điều đó với TemplateHTMLRenderer bằng tay crafting một hình thức thay đổi trường biểu mẫu để các dữ liệu JSON đầy đủ, tức là một Bar mới đó là trỏ đến Foo hiện có, giả sử tôi viết cập nhật và tạo các phương thức trên Bar. Nhưng điều này nghe có vẻ như tôi đang thiếu "cách dễ dàng" ở đâu đó.

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') 

Tôi hiểu rằng để lưu dữ liệu lồng nhau, bộ nối tiếp của tôi cần cập nhật và tạo. Thực hiện điều này ngay bây giờ. Nhưng tôi không thể có được đầu của tôi xung quanh, những gì tôi sẽ làm gì để có DRF cư một đầu vào chọn với một số đại diện của các tùy chọn Foo?

Tôi thiếu điều gì đó hiển nhiên? Dưới đây là các RTFM (một lần nữa) downvotes:/

Trả lời

1

Đây là năm tháng trước, do đó bạn có thể có câu trả lời ngay bây giờ nhưng tìm kiếm google của tôi đưa tôi đến đây để bắt đầu với.

Vì vậy, trong trường hợp bạn hoặc người khác xảy ra để đi qua đây là câu trả lời mà tôi nhận thấy làm việc tốt nhất là:

Django admin foreign key dropdown with custom value

Về cơ bản bạn cần phải nói cho nó theo một trong hai cách mà lĩnh vực/lĩnh vực để sử dụng như chuỗi cho trình đơn thả xuống.

Các vấn đề liên quan