2011-12-04 1 views
8

Tôi có một mô hìnhSử dụng height_field và width_field thuộc tính trong ImageField của Django

class Anh_chi_tiet(models.Model): 
    du_an  = models.ForeignKey(Du_an) 
    title  = models.CharField(max_length=120) 
    url   = models.ImageField(upload_to='images', height_field='50', width_field='100') 
    url_detail = models.ImageField(upload_to='images', height_field='200', width_field='400') 

tôi luôn luôn nhận được lỗi này:

'Anh_chi_tiet' object has no attribute '100' 

Dường như Django đòi hỏi cả các trường trong cùng một bảng Anh_chi_tiet để tiết kiệm height_field và width_field.

Tôi làm cách nào để trực tiếp đặt các giá trị này mà không cần thêm trường mới vào bảng?

Trả lời

17

height_field đại diện cho thuộc tính của mô hình được sử dụng để lưu trữ chiều cao.

class Anh_chi_tiet(models.Model): 

    url_height=models.PositiveIntegerField() 
    url_width=models.PositiveIntegerField() 
    url = models.ImageField(upload_to='images', height_field='url_height', width_field='url_width') 

Thông báo height_field='url_height'

+1

Có cách nào để thiết lập height_field và width_field trực tiếp mà không cần tạo url_height và các lĩnh vực url_width? – ronin1184

5

Tôi nghĩ rằng bạn đang hiểu nhầm những gì height_field và các thuộc tính width_field là dành cho.

Trường height_field không được sử dụng để thay đổi chiều cao. Nó được sử dụng để ghi lại chiều cao đã là.

Bằng cách này bạn có thể làm một cái gì đó giống như

<img src="..." height={{my_instance.my_height_field}} /> 

mà không cần phải đọc các tập tin.

Nếu bạn đang cố gắng để thay đổi kích thước tất cả các hình ảnh được tải lên thông qua một ImageField, kiểm tra ở đây: Image resizing with django?