#django #django-views #django-forms
Вопрос:
Это моя модель
class Food:
category = models.ForeignKey(
Category, on_delete=models.CASCADE, related_name="foods"
)
name = models.CharField(max_length=255)
Это моя форма
class FoodForm(forms.ModelForm):
location = forms.ModelChoiceField(
choices=CHOICES required=True
)
class Meta:
model = Food
fields = (
"name",
"location",
"category"
)
После обновления мне не нужно сохранять местоположение. Мне просто нужно это в фильтрации категории, так как это зависит от нее, но мне не нужно ее сохранять. при отправке обновления он выдает ошибку 'Food' object has no attribute 'location'
. Могу ли я каким-либо образом исключить это поле при отправке?
Таково мое мнение
class FoodUpdateView(BaseUpdateView):
form_class = forms.FoodForm
def get_queryset(self):
return Food.objects.all()
def form_valid(self, form):
return super().form_valid(form)
def form_invalid(self, form):
return redirect(self.get_success_url())
Комментарии:
1. В вашей
Food
модели нетlocation
поля, поэтому ошибка говорит о том, что она не знает, куда сохранить полеlocation
.2. Мне не нужно сохранять
location
ценность. Мне просто нужно это для фильтрацииcategory
в представлении шаблона. Но мне не нужно его спасать.3. затем вам следует удалить его из формы и, скорее всего, использовать JavaScript для фильтрации на стороне интерфейса.
4. Да, в настоящее время я уже использую javascript. Категория будет меняться каждый раз, когда меняется местоположение. Параметр расположение будет выбран из другого списка моделей. Есть ли в любом случае я могу загрузить его в форму?
5. да взгляните, например, на
django-selectable
. Это работает с поиском, где он будет запрашивать базу данных, если пользователь введет некоторые символы.