Tôi có một trường mô hình Django mà tôi muốn nội tuyến. Lĩnh vực này là mối quan hệ nhiều-nhiều. Vì vậy, có "Dự án" và "Hồ sơ người dùng". Mỗi hồ sơ người dùng có thể chọn bất kỳ số lượng dự án nào.Giao diện quản trị Django: sử dụng horizontal_filter với trường nội tuyến ManyToMany
Hiện tại, tôi đã có chế độ xem nội tuyến "dạng bảng". Có cách nào để có một "bộ lọc ngang" để tôi có thể dễ dàng thêm và loại bỏ các dự án từ một hồ sơ người dùng?
Vui lòng xem ảnh đính kèm để biết ví dụ.
Dưới đây là đoạn code mẫu cho các thành viên:
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
projects = models.ManyToManyField(Project, blank=True, help_text="Select the projects that this user is currently working on.")
Và mã mô hình cho một dự án:
class Project(models.Model):
name = models.CharField(max_length=100, unique=True)
application_identifier = models.CharField(max_length=100)
type = models.IntegerField(choices=ProjectType)
account = models.ForeignKey(Account)
principle_investigator = models.ForeignKey(User)
active = models.BooleanField()
Và mã quản trị cho quan điểm:
class UserProfileInline(admin.TabularInline):
model = UserProfile.projects.through
extra = 0
verbose_name = 'user'
verbose_name_plural = 'users'
class ProjectAdmin(admin.ModelAdmin):
list_display = ('name', 'application_identifier', 'type', 'account', 'active')
search_fields = ('name', 'application_identifier', 'account__name')
list_filter = ('type', 'active')
inlines = [UserProfileInline,]
admin.site.register(Project, ProjectAdmin)
Cảm ơn rất nhiều Chris! Điều này làm việc như một say mê lần đầu tiên tôi đã thử nó! –
Cảm ơn, bạn là người đàn ông. – whooot
Giải pháp tuyệt vời, làm việc tuyệt vời cho tôi. – Blackeagle52