Задать вопрос
@theoctopus

Как задать каждому полю отдельный класс?

Всем привет,

У меня есть форма для добавления вакансий. Мне нужно понять, как можно сделать так, чтобы у каждого поля был свой дизайн? Например, если это название вакансии, то у него чтобы был свой div class, а у другого поля другой.

Я пока неопытный и учусь, поэтому не судите строго.

При рендеринге form.as_p он выводит не так как требуется.

models.py

class Vacancies (models.Model):
    vac_name = models.CharField("Название вакансии", max_length=50)
    vac_req = models.TextField("Требования", max_length=1000)
    vac_obz = models.TextField("Обязанности", max_length=1000)
    vac_usl = models.TextField("Условия",max_length=1000)
    vac_salary = models.IntegerField("Зарплата", blank=False, default=0)
    vac_comp = models.ForeignKey(User,
                               related_name='company_name')
    vac_zan = models.ForeignKey('WorkTime', verbose_name="Выберите тип занятости")
    vac_locat = models.ForeignKey('LocatOn', verbose_name="Город")
    vac_exp = models.ForeignKey('Expierence', verbose_name="Требуемый опыт")
    vac_cat = models.ForeignKey('VacanCategory', verbose_name="Выберите категорию")
    created_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.vac_name


class CompanyName (models.Model):
    comp_name = models.CharField("Название компании", max_length=50, default=" ##Название компании## ")

    def __str__(self):
        return self.comp_name


class WorkTime (models.Model):
    work_t = models.CharField("Время работы", max_length=30, default=" ##Режим Работы## ")

    def __str__(self):
        return self.work_t


class LocatOn (models.Model):
    location_city = models.CharField("Город", max_length=30, default=" ##Название города## ")

    def __str__(self):
        return self.location_city


class Expierence (models.Model):
    exp_srok = models.CharField ("Опыт работы", max_length=10, default=" ##ОПЫТ РАБОТЫ## ")

    def __str__(self):
        return self.exp_srok

class VacanCategory (models.Model):
    vacan_cat = models.CharField ("Категория вакансии", max_length=45, default=" ##ОСНОВНАЯ КАТЕГОРИЯ## ")

    def __str__(self):
        return self.vacan_cat


forms.py

from django import forms
from .models import Vacancies

class VacForm(forms.ModelForm):
    class Meta:
        model = Vacancies
        fields = ('vac_name', 'vac_req','vac_obz', 'vac_usl','vac_salary', 'vac_comp','vac_zan', 'vac_locat', 'vac_exp','vac_cat', )
  • Вопрос задан
  • 235 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@deliro
Я пока неопытный и учусь, поэтому не судите строго.

По-моему, как раз, когда ты неопытный, судить нужно максимально строго, чтобы выправить руки в нужное русло как можно быстрее. А если ты от критики расстроишься и бросишь это всё - ну и ладно, меньше конкуренция.

Я уже сто раз тут это писал и ещё напишу, пока будет эта жесть.
Вот создал ты модель вакансий. Ты моделью описываешь единичную сущность, а назвал Vacancies - множественным числом.
Дальше: вот у тебя есть модель вакансий. Зачем ты каждому полю даёшь имя, дублирующее имя модели? (Я про vac_*). Создал ты вакансию, да:
vacancy = Vacancy.objects.create(...)
И пошёл получать атрибуты:
vacancy.vac_name # Красиво, п****ц, да?

Сокращённые названия атрибутов - красота. Через полгода ты понятия не будешь иметь, что за vac_zan, vac_usl, vac_cat. А человек, который будет с тобой работать в команде или рефакторить это после тебя получит отличный набор головоломок в подарок к коду.

Просто шикарные хитросплетения русского и английского языков. Твой код отражает твою многогранность и неповторимость. Ты - полиглот. Так ты думаешь, когда городишь эту ахинею?

Я, к сожалению, прямо сейчас занят рефакторингом подобного кода и первые два дня я плакал над этим кодом и отказывался за него садиться. Заказчик уговорил с условием, что я полностью переписываю ту жесть.

Ответ на вопрос: https://pypi.python.org/pypi/django-widget-tweaks
Ответ написан
Roman Kitaev дело говорит. послушайте его
а Ваша проблема решается так

class VacForm(forms.ModelForm):
    vac_name=forms.CharField(widget=forms.TextInput(attrs={'class':'supername'}))
    class Meta:
        model = Vacancies
        fields = ('vac_name', 'vac_req','vac_obz', 'vac_usl','vac_salary', 'vac_comp','vac_zan', 'vac_locat', 'vac_exp','vac_cat', )


либо так
class VacForm(forms.ModelForm):
        vac_name.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search', 'class':'supername''})
.....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы