Форма Django, использующая поля из нескольких моделей

У меня в файле models.py

следующее
from django.db import models

# Create your models here.
class DPlaces(models.Model):
    restaurant = models.CharField(blank=False, unique=True, max_length=50)

    def __str__(self):
        return self.restaurant

class DEntry(models.Model):
    place = models.ForeignKey(DPlaces, on_delete=models.CASCADE)
    e4date = models.DateField(blank=False)

У меня в файле forms.py

есть следующее
from django import forms
from .models import DEntry, DPlaces

class DEntryFilterForm(forms.Form):
    place = forms.ModelMultipleChoiceField(
        queryset=DPlaces.objects.all(),
        widget=forms.SelectMultiple(attrs={'class': 'form-control'}),
        required=False,
    )
    e4date = forms.ModelMultipleChoiceField(
        queryset=DEntry.objects.order_by().values_list('e4date', flat=True).distinct(),
        widget=forms.SelectMultiple(attrs={'class': 'form-control'}),
        required=False,
    )
    def __init__(self, *args, **kwargs):
        super(DEntryFilterForm, self).__init__(*args, **kwargs)
        self.fields['place'].queryset = DPlaces.objects.all()
        self.fields['e4date'].queryset = DEntry.objects.values_list('e4date', flat=True).distinct()

в моем файле views.py у меня есть

def entrytable_view(request):
    data_entries = DEntry.objects.all()
    filtered_entries = None

    if request.method == 'GET':
        form = DEntryFilterForm(request.GET)
        if form.is_valid():
              # Do Something

Форма работает и form.is_valid возвращает true, если выбран выбор в поле 'place', но не работает и form.is_valid возвращает false, если выбран выбор в поле 'e4date'.

Я подозреваю, что это связано с тем, что поле e4date не находится в модели DPlaces (оно находится в модели DEntry), но я не уверен. В любом случае, я не знаю, как заставить это работать. Любая помощь будет оценена по достоинству.

С помощью form.errors можно очень легко проверить ошибки формы. Вы можете изменить свою логику, чтобы увидеть фактические ошибки следующим образом:

    data_entries = DEntry.objects.all()
    filtered_entries = None

    if request.method == 'GET':
        form = DEntryFilterForm(request.GET)
        if form.is_valid():
              # Do Something
        else:
              print(form.errors)
Вернуться на верх