首页 > 解决方案 > 如何在我的 Django 表单中显示特定数据?

问题描述

我是 Django 的初学者,我正在制作一个用于借书的应用程序,现在我正在尝试使用这些模型制作一个表单:

在我的应用程序中

Class CopyB(models.Model):
     Copy= models.Autofield(primary key=True)
     Condition= models.Charfield(max_lenght=20)
     IdBook=models.ForeignKey(Book, blank= false, null= false ,on_delete= models.CASCADE)

同样在我的应用用户中

Class User(models.Model):
      Myid= models.Charfield(primary_key=True, max_length=20)
      Name= models.Charfield(max_length=20)
      Lastname= models.Charfield(max_length=20)

在我的应用贷款中

From apps.books.models import CopyB
From apps.users.models import User

Class loan(models.Model):
      IdLoan= models.Autofield(primary_key=True)
      IdB= models.ForeignKey(CopyB,blank=False, null=False)
      IdU= models.ForeignKey(User,blank=False, null=False)

我想要做的是从模型贷款中制作一个表单,并在 IdB 字段上的该表单上我只想在选择输入中显示模型 CopyB 中的 Books 字段条件等于可用

但是不知道怎么弄!提前致谢

标签: pythondjangodjango-formsdjango-views

解决方案


您必须过滤满足您想要的条件的对象并用它们填写选择字段。

class LoanForm(forms.ModelForm):

  IdB= forms.ModelChoiceField(queryset=CopyB.objects.filter(condition='available'))

  class Meta:
    model = Loan
    fields = "__all__"

或者

class LoanForm(forms.ModelForm):

  class Meta:
    model = Loan
    fields = "__all__"

  def __init__(self, *args, **kwargs):

    super(LoanForm, self).__init__(*args, **kwargs)
    self.fields['IdB'].queryset = CopyB.objects.filter(condition='available')

推荐阅读