Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22

Как сделать так, чтобы пользователь при создании статьи выбрал её тип из предложенных вариантов?

22.07.2020, 13:16. Показов 745. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как на странице сделать так, чтобы пользователь при создании статьи выбрал её тип из предложенных вариантов 1 или 2 с помощью html тега select. Для этого нужно файле forms указать, чтобы строка type выводилась в html не в теге input, а в теге select с 2 тегами option первый option это 1 второй 2. Как это правильно сделать?
это models
Python
1
2
3
4
5
6
7
8
from django.db import models
from django.contrib.auth.models import User
class Articles(models.Model):
    author=models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='Автор')
    create_date=models.DateTimeField(auto_now=True)
    name=models.CharField("Название статьи",max_length=200)
    text=models.TextField(verbose_name="Текст")
    type=models.CharField("тема",max_length=100)
это views
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from django.shortcuts import render,redirect
from .models import *
from django.views.generic import CreateView,UpdateView,DeleteView
from django.contrib.auth.mixins import LoginRequiredMixin
from .forms import *
from django.urls import reverse,reverse_lazy
class ArticleCreateView(LoginRequiredMixin,CreateView):
    login_url=reverse_lazy('login_page')
    model = Articles
    template_name = 'edit_page.html'
    form_class = ArticleForm
    success_url = reverse_lazy('edit_page')
    def get_context_data(self,**kwargs):
        kwargs['list_articles'] = Articles.objects.all()
        return super().get_context_data(**kwargs)
    def form_valid(self,form):
        self.object=form.save(commit=False)
        self.object.author=self.request.user
        self.object.save()
        return super().form_valid(form)
edit_page.html
HTML5
1
2
3
4
5
<form method="post" id="add_form">
       {% csrf_token %}
       {{form}}
      </form>
<button type="submit" form="add_form" class="btn btn-primary">Создать</button>
это forms.py
Python
1
2
3
4
5
6
7
8
from django import forms
from .models import *
class ArticleForm(forms.ModelForm):
    class Meta:
        model=Articles
        fields=('type','name','text')
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
это urls.py
Python
1
2
3
4
5
6
from django.contrib import admin
from django.urls import path
from core import views
urlpatterns = [
 path('edit-page', views.ArticleCreateView.as_view(), name='edit_page'),
]
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.07.2020, 13:16
Ответы с готовыми решениями:

Как сделать в запросе, чтобы пользователь выбрал определённый склад
Добрый вечер! Нужно с помощью запроса выбрать все товары из справочника номенклатура, которые хранятся на определённом складе, склад...

Как сделать так, чтобы при выборе в одном справочнике, при создании скрывались варианты выбора в другом?
В общем, есть 2 справочника Контрагенты и ДоговорыКонтрагентов. Есть такое условие: Тип договора не должен противоречить значению...

Как сделать так чтобы при создании новой ветки создавался новый текстовый документ
Как сделать так чтобы при создании новой ветки создавался новый текстовый документ и в него сохранялось содержимое из memo. И так же при...

8
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
22.07.2020, 14:06
ChoiceField смотри в форме
0
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
22.07.2020, 16:25  [ТС]
Добавлено через 20 минут
Я понял ,что вы имели в виду, так правильно?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django import forms
from .models import *
GEEKS_CHOICES =( 
    ("1", "One"), 
    ("2", "Two"),  
) 
class ArticleForm(forms.ModelForm):
    class Meta:
        model=Articles
        type= forms.ChoiceField(choices = GEEKS_CHOICES)
        fields=('type','name','text')
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
23.07.2020, 01:01
supeeeerman, да, верно. Только инит тут нет смысла переопределять
0
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
23.07.2020, 09:07  [ТС]
А как правильно сделать?
0
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
23.07.2020, 17:28  [ТС]
m0nte-cr1st0,с днём рождения
1
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
24.07.2020, 19:56  [ТС]
Может стоит написать отдельную форму?
0
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
25.07.2020, 12:21  [ТС]
Если оставить так ,то ничего ни меняется ,как передать ChoiceField и GEEKS_CHOICES строке type ?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django import forms
from .models import *
GEEKS_CHOICES =( 
    ("1", "One"), 
    ("2", "Two"),  
) 
class ArticleForm(forms.ModelForm):
    class Meta:
        model=Articles
        type= forms.ChoiceField(choices = GEEKS_CHOICES)
        fields=('type','name','text')
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
0
1 / 1 / 0
Регистрация: 17.05.2020
Сообщений: 22
28.07.2020, 14:09  [ТС]
Я нашёл способ лучше надо в файле models.py поле type изменить, вместо CharField надо использовать IntegerField и указать варианты
Python
1
2
3
4
5
6
7
8
9
10
from django.db import models
from django.contrib.auth.models import User
class Articles(models.Model):
    author=models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='Автор')
    create_date=models.DateTimeField(auto_now=True)
    name=models.CharField("Название статьи",max_length=200)
    text=models.TextField(verbose_name="Текст")
    type=models.IntegerField("тема",choices=((1, ("one")),
                                        (2, ("two")),
                                default=1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.07.2020, 14:09
Помогаю со студенческими работами здесь

Как сделать так, чтобы при клике на метку, пользователь открывал страницу?
myMap.geoObjects.add(new ymaps.Placemark(, { iconContent: '&lt;a href = \&quot;/\&quot; style=\&quot;font-weight:normal;\&quot;&gt;Краснодар&lt;/a&gt;' }, { ...

Как сделать так, чтобы тип данных DATE при заполнении принимал только год?
Приветствую! Дали задание на домашку создать БД Библиотека. В таблице Книга есть поле &quot;Год публикации&quot; тип данных которого должен...

Как сделать так, чтобы при создании объектов,полю присваивалось значение после вызова метода и этот объект добавлялся в коллекцию
Пробовал через конструктор, ног ничего не получается public Tematic(string ck,ArrayList r ){ ck=c; ...

Как сделать так, чтобы при создании файла с существующим именем нумерация добавлялась к имени файла?
Как сделать функцию, которая будет добавлять в имя файла нумерацию при каждом сохранении файла с существующим именем нумерацию в название...

Как оператором выбора сделать так, чтобы выбирало среди 5 возможных вариантов?
Помогите, забыл))) Как оператором выбора сделать так чтобы выбирало среди 5 возможных вариантов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru