Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menapis Pilihan ForeignKey dalam Borang Model Django Berdasarkan Syarikat Induk?

Bagaimana untuk Menapis Pilihan ForeignKey dalam Borang Model Django Berdasarkan Syarikat Induk?

Susan Sarandon
Lepaskan: 2024-11-25 12:57:11
asal
863 orang telah melayarinya

How to Filter ForeignKey Choices in a Django ModelForm Based on Parent Company?

Menapis Pilihan ForeignKey dalam Borang Model Django

Andaikan anda mempunyai model berikut ditakrifkan:

class Company(models.Model):
    name = ...

class Rate(models.Model):
    company = models.ForeignKey(Company)
    name = ...

class Client(models.Model):
    name = ...
    company = models.ForeignKey(Company)
    base_rate = models.ForeignKey(Rate)
Salin selepas log masuk

Matlamat adalah untuk memastikan bahawa semasa membuat pelanggan, pilihan kadar yang tersedia adalah terhad kepada pilihan dalam induk syarikat.

Dalam fail Django 1.0 forms.py:

from models import *
from django.forms import ModelForm

class ClientForm(ModelForm):
    class Meta:
        model = Client

    def __init__(self, company_id, *args, **kwargs):
        '''Filter the rate choices to only include those for the specified company'''
        super(ClientForm, self).__init__(*args, **kwargs)
        self.fields['base_rate'].queryset = Rate.objects.filter(company_id=company_id)
Salin selepas log masuk

Dalam views.py:

from django.shortcuts import render_to_response, get_object_or_404
from models import *
from forms import *

def addclient(request, company_id):
    the_company = get_object_or_404(Company,>
Salin selepas log masuk

Dengan menapis QuerySet yang diberikan kepada 'rate ', pilihan yang tersedia untuk ForeignKey 'base_rate' adalah terhad kepada kadar yang sesuai dalam tempoh yang ditetapkan syarikat.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Pilihan ForeignKey dalam Borang Model Django Berdasarkan Syarikat Induk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan