2009-11-04 28 views
6

Tôi có các mục nhập khóa ngoài trong mô hình của mình mà tôi muốn sử dụng cho các trường lựa chọn của mình ... bây giờ tôi không chắc chắn cách thực hiện điều này .... tệp mô hình của tôi có thể được tìm thấy here Về cơ bản tôi muốn có một sự lựa chọn cho xe làm, mô hình, năm, phong cách cơ thể, màu sắc bên ngoài và truyền tải. Vì tất cả chúng đều hoạt động theo cùng một cách, tôi chỉ cần một người nào đó chỉ cho tôi đúng hướng thì tôi đã sẵn sàng.Chọn trường ForeignKey ở dạng ChoiceField

class Model(models.Model): 
    model = models.CharField(max_length=15, blank=False) 
    manufacturer = models.ForeignKey(Manufacturer) 
    date_added = models.DateField() 
    def __unicode__(self): 
     name = ''+str(self.manufacturer)+" "+str(self.model) 
     return name 

class BodyStyle(models.Model): 
    doors = models.PositiveSmallIntegerField() 
    passengers = models.PositiveSmallIntegerField() 
    style = models.CharField(max_length=15, blank=False) 
    def __unicode__(self): 
     name = str(self.doors)+" Door/"+str(self.passengers)+" Passenger/"+str(self.style) 
     return name 

Trả lời

15

Có lẽ bạn đang tìm kiếm ModelChoiceField?

Để sử dụng nó, bạn sẽ viết một cái gì đó như:

class VehicleForm(forms.Form): 
    series = ModelChoiceField(queryset=Series.objects.all()) # Or whatever query you'd like 

Sau đó làm tương tự cho các lĩnh vực khác.

Tất nhiên, có thể bạn sẽ sử dụng ModelForm nhưng đó chỉ là một ví dụ. Đó là những gì bạn đang tìm kiếm?

+0

Tôi nghĩ rằng đây là nhiều hơn những gì tôi muốn .... hãy để tôi thử nó trong một vài phút sau đó tôi sẽ xem nếu nó hoạt động. –

+0

nó hoạt động tốt :) chỉ là một vấn đề mặc dù ... có kiểu dáng cơ thể và mô hình mô hình không chỉ trả về tên mẫu, ví dụ: MDX trong unicode mô hình của tôi ... nó cung cấp cho mô hình cộng thêm, vì vậy đây là những gì tôi nhận được trong mẫu của tôi nhưng tôi chỉ muốn mô hình. Cùng với phong cách ... xem chỉnh sửa của tôi ở trên cho định nghĩa mô hình –

+0

Tôi không chắc tôi hoàn toàn hiểu những gì bạn đang nói (tôi bị bệnh vì vậy nhận thức của tôi là tắt .. :)) nhưng tôi nghĩ những gì bạn muốn là sử dụng 'label_from_instance' cho phép bạn sửa đổi đầu ra của trường. Nếu bạn google đó, bạn nên tìm một số ví dụ. – Bartek

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