Tôi đang cố gắng triển khai tính năng định vị địa lý cho một đội xe tải. Tôi phải liên kết một danh sách các ranh giới với một chiếc xe. Trên hết, một trong những yêu cầu đó là giữ mọi thứ ngay cả khi nó bị xóa vì mục đích kiểm toán. Vì vậy, chúng tôi phải thực hiện xóa mềm trên mọi thứ. Đây là chỗ có vấn đề. Trường nhiều đến nhiều của tôi không tuân theo trình quản lý xóa mềm, nó bao gồm cả bản ghi hoạt động và không hoạt động trong tập dữ liệu tra cứu.Làm cách nào để lọc qua Mô hình của trường nhiều đến nhiều?
class Vehicle(SoftDeleteModel):
routes = models.ManyToManyField('RouteBoundary', through='VehicleBoundaryMap', verbose_name=_('routes'),
limit_choices_to={'active': True})
class VehicleBoundaryMap(SoftDeleteModel):
vehicle = models.ForeignKey(Vehicle, verbose_name="vehicle")
route_boundary = models.ForeignKey(RouteBoundary, verbose_name="route boundary")
# ... more stuff here
alive = SoftDeleteManager()
class SoftDeleteManager(models.Manager):
use_for_related_fields = True
def get_queryset(self):
return SoftDeleteQuerySet(self.model).filter(active=True)
Như bạn thấy ở trên tôi đã cố gắng để đảm bảo quản lý mặc định là một người quản lý xóa mềm (ví dụ. Lọc cho hồ sơ hoạt động chỉ) và cũng có thể thử sử dụng giới hạn limit_choices_to nhưng mà bật ra trường mô hình nước ngoài chỉ không mô hình "thông qua" mà tôi muốn. Nếu bạn có bất cứ đề nghị hoặc đề nghị tôi rất thích nghe từ bạn.
Cảm ơn!
Thay vì tự mình thực hiện xóa mềm, hãy sử dụng thứ gì đó như [django-reversion] (https://github.com/etianen/django-reversion). – Anonymous
Xóa mềm đó đã được triển khai ở mọi nơi rồi, tôi không thể thay đổi được nữa. Tôi ước chúng ta sẽ sử dụng sự đảo ngược, nó sẽ cứu chúng ta rất nhiều đau đầu. –