Render hidden form fields & fix tests

This commit is contained in:
Sonny 2020-05-21 21:34:16 +02:00
parent d446746794
commit 4bec9a9079
2 changed files with 16 additions and 3 deletions

View file

@ -1,6 +1,7 @@
from django import forms from django import forms
from django.forms.widgets import CheckboxSelectMultiple from django.forms.widgets import CheckboxSelectMultiple
from newsreader.accounts.models import User
from newsreader.news.collection.models import CollectionRule from newsreader.news.collection.models import CollectionRule
from newsreader.news.core.models import Category from newsreader.news.core.models import Category
@ -23,6 +24,11 @@ class CategoryForm(forms.ModelForm):
required=False, queryset=CollectionRule.objects.none(), widget=RulesWidget required=False, queryset=CollectionRule.objects.none(), widget=RulesWidget
) )
user = forms.ModelChoiceField(
queryset=User.objects.none(),
widget=forms.widgets.HiddenInput(attrs={"readonly": True}),
)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user") self.user = kwargs.pop("user")
@ -31,9 +37,12 @@ class CategoryForm(forms.ModelForm):
self.fields["rules"].queryset = CollectionRule.objects.filter(user=self.user) self.fields["rules"].queryset = CollectionRule.objects.filter(user=self.user)
self.fields["rules"].widget.category = self.instance self.fields["rules"].widget.category = self.instance
self.fields["user"].queryset = User.objects.filter(pk=self.user.pk)
self.initial["user"] = self.user
def save(self, commit=True): def save(self, commit=True):
instance = super().save(commit=False) instance = super().save(commit=False)
instance.user = self.user
if commit: if commit:
instance.save() instance.save()
@ -46,4 +55,4 @@ class CategoryForm(forms.ModelForm):
class Meta: class Meta:
model = Category model = Category
fields = ("name", "rules") fields = ("name", "rules", "user")

View file

@ -12,7 +12,11 @@
{% endif %} {% endif %}
<section class="section form__section"> <section class="section form__section">
{% for field in form %} {% for field in form.hidden_fields %}
{{ field }}
{% endfor %}
{% for field in form.visible_fields %}
<fieldset class="fieldset form__fieldset"> <fieldset class="fieldset form__fieldset">
<label class="label form__label" for="{{ field.name }}"> <label class="label form__label" for="{{ field.name }}">
{{ field.label }} {{ field.label }}