2013-02-22 32 views
12

Tôi mới dùng Django và có mô hình Ứng dụng và mô hình Môi trường. Môi trường có ứng dụng như một ngoại ngữ. Tôi biết rằng tôi cần phải viết một phương thức unicode() để trình bày mô hình có thể đọc được của con người, nhưng có cách nào để lấy thuộc tính từ đối tượng ngoại khoá để hiển thị như một phần của chuỗi không?django - mô hình unicode() hiển thị thuộc tính đối tượng ngoại khóa

class Application(models.Model): 
    app_id = models.IntegerField(primary_key=True) 
    app_name = models.CharField(max_length=200) 
    app_description = models.CharField(max_length=2000, blank=True) 

    def __unicode__(self): 
     return self.app_name 

class Environment(models.Model): 
    app_id = models.ForeignKey(Application, db_column='app_id') 
    environ_id = models.IntegerField(max_length=6) 
    environ_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return '%s %s' % (application__app_name, self.environ_name) 

Tôi muốn mô hình Môi trường được biểu diễn dưới dạng "app_name environ_name".

Cập nhật: Lý do tôi muốn hiển thị mô hình Môi trường là "app_name environ_name" để người dùng nhập dữ liệu trên trang quản trị rõ ràng hơn. Ví dụ, app_name sẽ là "NavSystem" và environ_name sẽ là "DEV1", do đó, có mô hình Môi trường được biểu thị là "NavSystem DEV1" hữu ích hơn chỉ là "DEV1".

Trả lời

13

Bạn thực sự có thể, bằng cách tham chiếu đến thuộc tính bằng cách sử dụng cú pháp 'dấu chấm'. Đây là những gì bạn muốn:

def __unicode__(self): 
    return '%s %s' % (self.app_id.app_name, self.environ_name)  
+0

Tuyệt vời, đây chính xác là những gì tôi cần. Cảm ơn! – MD6380

+1

nếu tôi sử dụng "cú pháp chấm" để truy cập đối tượng Key ngoài, tôi nhận được: đối tượng 'NoneType' không có thuộc tính 'name'. Tôi sử dụng bản thân. . . Thuộc tính "name" tồn tại. – Timo

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