django - 必须将我从整个列表中排除的查询
问题描述
嗨,我有这个过滤器的问题。group_to_add 采用一些值应该过滤掉我不想要这些值但我想要其他没有这些值的问题。我想找到一种方法来获取这些值并从其他值中减去它们。
group_to_add = DatiGruppi.objects.filter(gruppi_scheda = scheda.id)
GruppiForm.base_fields['dati_gruppo'] = forms.ModelChoiceField(queryset = group_to_add)
我问了一个类似的问题 ,如果它们已经存在于数据库中,我会留下链接选择过滤和删除
楷模
class Schede(models.Model):
nome_scheda = models.CharField(max_length=100)
utente = models.ForeignKey(User, on_delete = models.CASCADE,related_name = 'utente')
class DatiGruppi(models.Model):
dati_gruppo = models.ForeignKey(Gruppi,on_delete = models.CASCADE, related_name = 'dati_gruppo')
gruppi_scheda = models.ForeignKey(Schede,on_delete = models.CASCADE, related_name = 'gruppi_scheda')
class Gruppi(models.Model):
nome_gruppo = models.CharField(max_length=100)
我有这个选项卡,里面有保存的数据组,其中包含选择正确排除的组
group_to_add = Gruppi.objects.exclude(dati_gruppo = 147)
但是我必须输入该板的数据组的 ID 而不是 147
看法
def creazione(request, nome):
scheda = get_object_or_404(Schede, nome_scheda = nome)
eserciziFormSet = formset_factory(EserciziForm, extra = 0)
if request.method == "POST":
gruppo_form = GruppiForm(request.POST, prefix = 'gruppo')
if gruppo_form.is_valid():
gruppo = gruppo_form.save(commit = False)
gruppo.gruppi_scheda = scheda
gruppoName = gruppo_form.cleaned_data['dati_gruppo']
gruppo.save()
esercizi_formset = eserciziFormSet(request.POST, prefix='esercizi')
for esercizi in esercizi_formset:
esercizi_instance = esercizi.save(commit = False)
esercizi_instance.gruppo_single = get_object_or_404(DatiGruppi, gruppi_scheda = scheda.id, dati_gruppo = gruppoName)
esercizi_instance.save()
return HttpResponseRedirect(request.path_info)
else:
group_to_add = Gruppi.objects.exclude(dati_gruppo = 147)
GruppiForm.base_fields['dati_gruppo'] = forms.ModelChoiceField(queryset = group_to_add)
gruppo_form = GruppiForm(prefix = 'gruppo')
esercizi_formset = eserciziFormSet(prefix='esercizi')
context = {'scheda' : scheda, 'gruppo_form' : gruppo_form, 'esercizi_formset': esercizi_formset}
return render(request, 'crea/passo2.html', context)
解决方案
如果我理解正确,您应该使用.exclude(…)
[Django-doc]而不是.filter(…)
[Django-doc]:
group_to_add = Gruppi.objects.exclude(
dati_gruppo__gruppi_scheda=scheda
)
GruppiForm.base_fields['dati_gruppo'] = forms.ModelChoiceField(queryset=group_to_add)
推荐阅读
- html - 将按钮添加到 CSS 图像?
- vue.js - 如何使用Vuetifyjs更改日历中过去事件的颜色
- c# - 使用 Angular 和 .net core api 设置 DocuSign 电子签名
- laravel - laravel 资源 url 取决于模型?
- bash - bash 变量来存储目录名和空格
- javascript - Change class child property using javascript
- database - Handle JMS commit failure after JDBC commit is success
- c++ - How many implicit conversions can C++ do to convert one user-defined type to another when initializing class types?
- r - 使用 R,如何获得两个字符串的“差异”?
- javascript - 从Vue中的选择元素中选择选项后如何调用函数?