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

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

22.07.2020, 13:16. Показов 764. Ответов 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru