Saya mencoba untuk memfilter tabel di Django berdasarkan pada nilai bidang tertentu dari a ForeignKey
.
Misalnya, saya punya dua model:
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Saya ingin memfilter daftar aset saya berdasarkan nama proyek terkait.
Saat ini, saya melakukan dua pertanyaan:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Saya ingin tahu apakah ada cara untuk menentukan jenis pemfilteran ini di kueri utama?
django
django-models
django-queryset
Fraser Graham
sumber
sumber
contains
menjelaskan tipe perbandingan yang digunakan dalam query yang dihasilkan oleh django ORM, sql mungkin akan terlihat seperti ituLIKE '%Foo%'
.Ini telah dimungkinkan sejak
queryset-refactor
cabang mendarat sebelum 1.0. Tiket 4088 mengungkap masalahnya. Ini harus bekerja:The Django dokumentasi Banyak-ke-satu memiliki ini dan contoh-contoh lain dari berikut Foreign Keys menggunakan API Model.
sumber
Dalam aplikasi saya di atas, saya berasumsi bahwa setelah seorang siswa terdaftar, instance subjek SubjectGrade akan dibuat yang berisi subjek yang terdaftar dan siswa itu sendiri.
Model Subjek dan Pengguna Mahasiswa adalah Kunci Asing untuk Model SubjectGrade.
Di "available_subjects", saya mengecualikan semua mata pelajaran yang sudah didaftarkan oleh student_user saat ini dengan memeriksa semua instance subjectgrade yang memiliki atribut "student" sebagai student_user saat ini
PS. Mohon maaf sebelumnya jika Anda masih tidak bisa mengerti karena penjelasan saya. Ini adalah penjelasan terbaik yang bisa saya berikan. Terima kasih banyak
sumber