【问题标题】:Exclude one Field value in Foreign Key dropdown list in Model Form在模型表单的外键下拉列表中排除一个字段值
【发布时间】:2013-11-29 04:37:13
【问题描述】:

我有一个这样的模型:

class Package(models.Model):
    package_name = models.CharField(max_length=200)
    package_price = models.IntegerField()

class UserPackage(models.Model):
    user = models.ForeignKey(User)
    package = models.ForeignKey(Package)

ModelForm 像这样:

class UserPackageForm(ModelForm):
    class Meta:
        model = UserPackage
        exclude = ['user']

我想列出packages 不包括Free 这就是我这样做的原因:

def __init__(self, *args, **kwargs):
            super(UserPackageForm, self).__init__(*args, **kwargs)
            self.fields['package'].queryset = Package.objects.exclude(package="Free")

它也显示Free 包。怎么了?

【问题讨论】:

标签: django django-forms


【解决方案1】:

exclude 参数错误,试试 package_name 而不是 package。

from django.forms.models import BaseModelFormSet

class UserPackageForm(ModelForm):
     def __init__(self, *args, **kwargs):
            super(UserPackageForm, self).__init__(*args, **kwargs)
            self.fields['package_name'].queryset = self.fields['package_name '].queryset.exclude(package_name="Free")

【讨论】:

  • 也对 init 函数进行了更改。使用 self.queryset
  • 希望我所做的最后一个更改可以解决问题。self.fields['package_name'].queryset = self.fields['package_name '].queryset.exclude(package_name="Free")
【解决方案2】:

试试这个
self.fields['package'].queryset = Package.objects.exclude(package__name="Free")

【讨论】:

    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2021-09-13
    • 1970-01-01
    相关资源
    最近更新 更多