Tôi có một mô hình:Làm cách nào để tạo trường mô hình Django được tính khi chạy?
class Person (models.Model):
name = models.CharField()
birthday = models.DateField()
age = models.IntegerField()
Tôi muốn làm age
lĩnh vực để hành xử như một tài sản:
def get_age (self):
return (datetime.datetime.now() - self.birthday).days // 365
age = property (get_age)
nhưng đồng thời tôi cần age
trở thành một lĩnh vực thực sự, vì vậy tôi có thể tìm thấy nó trong Person._meta.fields
và chỉ định các thuộc tính cho nó: age.help_text = "Age of the person"
, v.v.
Rõ ràng tôi không thể chỉ ghi đè Person.save()
phương pháp để tính và lưu trữ age
trong cơ sở dữ liệu, bởi vì nó chắc chắn sẽ trở thành sai sau này (trên thực tế, nó không nên được lưu trữ trong cơ sở dữ liệu ở tất cả).
Thực ra, tôi không cần phải có bộ định giờ, nhưng giải pháp tốt nhất phải có tính năng cài đặt.
Có thể ở Django, hoặc có thể có cách tiếp cận pythonic và djangoic hơn cho vấn đề của tôi?
Tại sao sẽ ghi đè phương pháp lưu không hoạt động? –
Bởi vì nó có thể là sai thời gian tới, chúng tôi nhận được một ví dụ mô hình. Đây là một ví dụ đơn giản, tôi thực sự có các trường phức tạp hơn, có giá trị thay đổi không thể đoán trước, phụ thuộc vào một số yếu tố khác. –