2011-01-20 39 views
7

Tôi đang thử điền trước một trường biểu mẫu với dữ liệu từ một đối tượng Db. Làm thế nào để bạn thiết lập biểu mẫu, dạng xem và mô hình để điền vào một trường có dữ liệu này?Điền Dữ liệu Trường Biểu mẫu Django với Dữ liệu Db

Mục đích là để cho phép người dùng chỉ chọn dữ liệu được truy vấn từ đối tượng. Ví dụ Một sự kiện có các ban nhạc đang phát, người dùng chọn ban nhạc yêu thích của họ từ những người tham gia sự kiện.

Tôi đã thử tìm kiếm các tài liệu cho form.data - nhưng dường như không thể tìm thấy những gì tôi đang tìm kiếm.

Cảm ơn!

Trả lời

4

Giả sử mô hình sự kiện của bạn chứa dải như Nhiều-2-Nhiều chủ chốt, cách bố trí của các hình thức và quan điểm sẽ như sau:

forms.py:

class EditEventForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(EditEventForm, self).__init__(*args, **kwargs) 
     self.fields['bands'].queryset= \ 
         Bands.objects.filter(Q(name='band1')|Q(name='band2')) 
    class Meta: 
     model = Event 

Chú ý: Bạn sẽ cần để điều chỉnh bộ truy vấn tìm nạp trong các biểu mẫu cho yêu cầu của bạn.

views.py:

form = EditEventForm(instance=event) 

Hơn nữa, phù hợp với các đề nghị do dcrodjer, đi trước và đọc một số văn bản về việc thực hiện ModelMultipleChoiceField

1

Bạn có thể nhận được tùy chỉnh nhiều hơn một chút bằng cách truyền đối số cho Mẫu

class SelectBandForm(forms.Form): 
def __init__(self, event, *args, **kwargs): 
    super(EditEventForm, self).__init__(*args, **kwargs) 
    self.fields['bands'] = forms.ModelChoiceField(label="Whats your favorite band?", 
       empty_label="Select a Band" , querset=Bands.objects.filter(event=event)) 

Sau đó, trong quan điểm của bạn

if request.method =="POST": 
    form = SelectBandForm(event, request.POST) 
    if form.is_valid(): 
     #do stuff 
else: 
    form = SelectBandForm(event) 
    #show it 
Các vấn đề liên quan