Как вручную написать форму в шаблоне при использовании forms.py - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь вручную написать дизайн формы в шаблоне, потому что то, что я получаю от {{form.as_p}} выглядит как дерьмо.

Я получилмодель по ссылке пользователя и другая модель.Как модель соединения для создания множества к одному, с одним дополнительным полем.

Так что это мои модели, кроме исключая пользовательскую модель.

class UserGroup(models.Model):
    nickname = models.CharField(max_length=55)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    group = models.ForeignKey('group.Group', on_delete=models.CASCADE)

И модель группы

class Group(models.Model):
    name = models.CharField(max_length=250)
    location = models.ForeignKey('Location', on_delete=models.SET_NULL, null=True, blank=False)
    active = models.BooleanField(default=True)

Forms.py выглядит следующим образом

class UserGroups(forms.ModelForm):

    class Meta:
        model = UserGroup
        fields = ('nickname', 'group')

Также представление ofc:

@method_decorator(login_required, name='dispatch')
class UserGroup(generic.CreateView):
    form_class = UserGroups
    template_name = 'users/user_group.html'

    def get(self, request, *args, **kwargs):
        return render(request, self.template_name, {'form': self.form_class})

Теперь, когда я использую {{form.as_p}} в шаблоне.Это становится действительно уродливым.Хуже всего то, что группы несколько.Он создает раскрывающийся список Select-Option.Я не к чему это.Я хочу просмотреть все группы и ввести псевдоним для каждой из них.Таким образом, пользователь может решить, к какой группе он хочет добавить псевдоним.

Это все, что я могу сказать.Это циклично.

{% for f in form.group %}
     <label>{{ f }}</label>
     <input id="{{ f.group }}" name="{{ f.group }}" value="{{ f.group|default_if_none:'' }}" type="text" placeholder="nickname" />
{% endfor %}

Я действительно не понимаю, как вызывать pk, имена полей и т. Д. Из формы.Я не могу найти хорошую документацию по этому поводу.

Есть предложения о том, как это сделать?

1 Ответ

0 голосов
/ 26 декабря 2018

Вы можете использовать его, используя имя поля формы

<form action='' method=''>
   {% csrf_token %}
   {{form.name}}
   {{form.location}}
   {{form.active}}
   <input type='submit'/>
</form>

Вы можете получить этот документ здесь

...