Tôi chỉ mới bắt đầu chơi với Django hôm nay và cho đến nay tôi cảm thấy khá khó khăn để làm những việc đơn giản. Những gì tôi đang đấu tranh với ngay bây giờ là lọc danh sách các loại trạng thái. Mô hình StatusTypes là:Lọc kết quả mô hình cho quản trị Django chọn hộp
class StatusTypes(models.Model):
status = models.CharField(max_length=50)
type = models.IntegerField()
def __unicode__(self):
return self.status
class Meta:
db_table = u'status_types'
Trong một trang admin Tôi cần tất cả các kết quả trong đó type = 0 và trong một tôi sẽ cần tất cả các kết quả trong đó type = 1 vì vậy tôi không thể chỉ hạn chế nó từ bên trong mô hình. Tôi sẽ đi đâu để tới đó?
CHỈNH SỬA: Tôi nên rõ ràng hơn một chút. Tôi có một mô hình "Đơn vị" trong đó có một khóa nước ngoài để StatusTypes. Các mô hình như sau:
class StatusTypes(models.Model):
status = models.CharField(max_length=50)
type = models.IntegerField()
def __unicode__(self):
return self.status
class Meta:
db_table = u'status_types'
class Unit(models.Model):
name = models.CharField(unique=True, max_length=50)
status = models.ForeignKey(StatusTypes, db_column='status')
note = models.TextField()
date_added = models.DateTimeField()
def __unicode__(self):
return self.name
class Meta:
db_table = u'units'
Vì vậy, bây giờ trong trang quản trị cho các mô hình đơn vị tôi muốn giới hạn trạng thái để chỉ những người có type = 1. Dựa tắt của phản ứng lazerscience dưới đây tôi đã cố gắng đoạn mã sau:
from inv.inventory.models import Unit
from django.contrib import admin
class UnitAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(UnitAdmin, self).queryset(request)
return qs.filter(type=0)
admin.site.register(Unit, UnitAdmin)
Nhưng, nó hoàn toàn không thay đổi hộp chọn. Tôi cũng đã cố gắng in ấn giá trị của qs và không có gì được xuất ra thiết bị đầu cuối của tôi vì vậy tôi tự hỏi nếu tôi có một số queryset gọi như thế nào?
EDIT 2: Có thể không rõ ràng rằng tôi muốn lọc điều này cho menu thả xuống trạng thái trên trang tạo cho mô hình Đơn vị.
Cảm ơn bạn đã phản hồi.List_filter sẽ không hoạt động vì bạn không thể có một đơn vị có trạng thái kiểu = 0 và trừ khi tôi bị nhầm lẫn list_filter chỉ cần thêm một thanh bên cho người dùng tùy chọn. Tôi hơi ngạc nhiên vì điều này rất khó làm ... ít nhất là tôi vẫn chưa thể tìm được câu trả lời. Tất cả những gì tôi muốn làm là thêm 'WHERE part = 1' vào truy vấn. – blcArmadillo
Có lẽ tôi đang thiếu điểm trên những gì bạn muốn, nhưng nếu bạn thêm 'status' vào danh sách' list_filter', nó sẽ cung cấp cho bạn một widget cho phép bạn lọc dựa trên bất kỳ giá trị cho phép nào cho trường đó. Nó hoạt động bằng cách thêm một tham số get vào url admin, chính xác như những gì bạn cần. –
Gabriel, tôi mới nhận ra sự nhầm lẫn có thể là gì. Tôi muốn lọc các loại trạng thái cho trường chọn trạng thái trên trang thêm. Không thêm cột bộ lọc vào danh sách các Đơn vị đã được thêm. Điều này có giúp làm rõ mọi thứ không? – blcArmadillo