【问题标题】:Django how to filter ManyToMany FieldDjango如何过滤ManyToMany字段
【发布时间】:2020-05-04 06:19:31
【问题描述】:

我正在尝试构建一个带有过滤的多对多字段的表单。 所以我创建了对象:

日名

1) 名称=星期日

2) 姓名=星期一

子主目录

1) 名称:数学

天(多对多字段):星期日星期一

2) 名称:运动

天(多对多字段):星期二

3) 名称:舞蹈

天数(多对多字段):星期日星期二

1)name(Char field)="Sunday"

hog1(ManytoMany field, filterd): 只显示 DanceMath 可供选择。

如何在 form.py 中填充这个 hog1 manytomany 字段? 我应该将 Name of Day 模型更改为 dayname 的 forginkey 吗? 谢谢你的帮助。

我有 3 个模型:

Models.py

class Dayname(models.Model):
 name = models.CharField(verbose_name="day", max_length=200, null=True)
 def __str__(self):
    return self.name


class Submain(models.Model):

  name = models.CharField(verbose_name="שם החוג", max_length=200, null=True)
 days = models.ManyToManyField(Dayname, verbose_name="ימי פעילות", 
 related_name="active", max_length=200, null=True,
                              )

def __str__(self):
    return self.name




class Day(models.Model):
  name = models.CharField(verbose_name="יום", max_length=200, null=True)
  hog2 = models.ManyToManyField(Submain, verbose_name="חוג 2 ביום", 
     related_name="hog2", max_length=200, null=True,
                              )

  def __str__(self):
    return self.name

forms.py

class DaysForm(ModelForm):

def __init__(self, *args, **kwargs):
    super(DaysForm, self).__init__(*args, **kwargs)
    self.fields['hog1'].required = False
    self.fields["hog1"].widget = CheckboxSelectMultiple()
    self.field['hog1'].queryset = Submain.objects.filter(days__in__name="sunday")

【问题讨论】:

    标签: python django django-forms django-templates


    【解决方案1】:
    self.fields['hog1'].queryset = Submain.objects.filter(days__in=['id of dayname'])
    

    您可能想要添加 .distinct()。

    【讨论】:

    • 我得到错误:“DaysForm”对象没有属性“字段”@cwhisperer
    • class Meta 在您定义字段的地方丢失:classMeta: model = 'yourmodel' fields = ('name of field',)
    • 我有。 ` self.field['hog1'].queryset = Submain.objects.filter(days__in=['1']).distinct() class Meta: model = Day fields = 'all' `
    • self.field['hog1'] 有一个错字:s is missing
    • 谢谢,但它不会过滤。看:`self.fields['hog1'].queryset = Submain.objects.filter(days__in=['sunday']).distinct()`
    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    • 2021-10-18
    • 2021-08-31
    • 2018-06-09
    相关资源
    最近更新 更多