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.forms.widgets import CheckboxSelectMultiple
from newsreader.accounts.models import User
from newsreader.news.collection.models import CollectionRule
from newsreader.news.core.models import Category
@ -23,6 +24,11 @@ class CategoryForm(forms.ModelForm):
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):
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"].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):
instance = super().save(commit=False)
instance.user = self.user
if commit:
instance.save()
@ -46,4 +55,4 @@ class CategoryForm(forms.ModelForm):
class Meta:
model = Category
fields = ("name", "rules")
fields = ("name", "rules", "user")

View file

@ -12,7 +12,11 @@
{% endif %}
<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">
<label class="label form__label" for="{{ field.name }}">
{{ field.label }}