Size: a a a

Django [ru] #STAY HOME

2020 March 10

BB

Burn Brain in Django [ru] #STAY HOME
Добрый вечер, у меня сложна структура моделей, но я хочу их тестировать, можно ли будет как-то наследовать тесты друг от друга и экономить код или можно сделать что-то вроде тестовой БД?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ты про unittest-ы говоришь ?
источник

PC

Patsy Charmer in Django [ru] #STAY HOME
Dan Tyan
ты еще не разобрался =) ?
никак не получается(
пишу все как в доках, а на выходе не работает)
источник

BB

Baktiyar Bekbergen in Django [ru] #STAY HOME
👍🏻
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Patsy Charmer
никак не получается(
пишу все как в доках, а на выходе не работает)
сейчас у себя что то подобное попробую найти
источник

BB

Burn Brain in Django [ru] #STAY HOME
Dan Tyan
ты про unittest-ы говоришь ?
да
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ну тестовая база там каждый раз создается, если не указал keep-db
источник

DT

Dan Tyan in Django [ru] #STAY HOME
тесты можно писать классами
источник

DT

Dan Tyan in Django [ru] #STAY HOME
вопрос в чем ?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Patsy Charmer
никак не получается(
пишу все как в доках, а на выходе не работает)
скинь еще раз код
у меня с поменялось
источник

PC

Patsy Charmer in Django [ru] #STAY HOME
Dan Tyan
скинь еще раз код
у меня с поменялось
models.py:
CHOICES_GENDER = [('m', 'man'), ('w', 'woman')]

class Student(models.Model):
   ...
  gender = models.CharField(max_length=1, choices=CHOICES_GENDER)

forms.py:
class StudentAddForm(forms.ModelForm):
   ...    
   gender = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class': 'radio-control'}),
                              choices=CHOICES_GENDER, initial='m'),
   ...

template.html:
    <form action="" method="post" novalidate>
   {% csrf_token %}
   <table>
       {{ form.as_table }}
       <tr>
           <td>&nbsp;</td>
           <td><input type="submit" value="Submit"></td>
       </tr>
   </table>
   </form>

Радио-кнопки все равно не появляются, обычный селектор унылый.
источник

BB

Burn Brain in Django [ru] #STAY HOME
чтобы протестировать модель, которая связана внешним ключом со своим списком, создателем, ограничением и т.д. придется внутри теста создавать не только её но и этот списком, создатель, ограничение, а я понятное дело, не хочу. как избежать копипаста?
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Patsy Charmer
models.py:
CHOICES_GENDER = [('m', 'man'), ('w', 'woman')]

class Student(models.Model):
   ...
  gender = models.CharField(max_length=1, choices=CHOICES_GENDER)

forms.py:
class StudentAddForm(forms.ModelForm):
   ...    
   gender = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class': 'radio-control'}),
                              choices=CHOICES_GENDER, initial='m'),
   ...

template.html:
    <form action="" method="post" novalidate>
   {% csrf_token %}
   <table>
       {{ form.as_table }}
       <tr>
           <td>&nbsp;</td>
           <td><input type="submit" value="Submit"></td>
       </tr>
   </table>
   </form>

Радио-кнопки все равно не появляются, обычный селектор унылый.
gender = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class': 'radio-control'}),
                              choices=CHOICES_GENDER, initial='m'),


это убери
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Burn Brain
чтобы протестировать модель, которая связана внешним ключом со своим списком, создателем, ограничением и т.д. придется внутри теста создавать не только её но и этот списком, создатель, ограничение, а я понятное дело, не хочу. как избежать копипаста?
никак, это не уровень тестов
это уровень базы даных
источник

PC

Patsy Charmer in Django [ru] #STAY HOME
Dan Tyan
gender = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class': 'radio-control'}),
                              choices=CHOICES_GENDER, initial='m'),


это убери
а вместо этого?)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Patsy Charmer
а вместо этого?)
class StudentAddForm(forms.ModelForm):
   
   class Meta:
       model = ...
       fields = (
           ...,
           'gender'
           ...,
       )
       widgets = {
           'gender': widgets.RadioSelect()
       }
источник

PC

Patsy Charmer in Django [ru] #STAY HOME
Dan Tyan
class StudentAddForm(forms.ModelForm):
   
   class Meta:
       model = ...
       fields = (
           ...,
           'gender'
           ...,
       )
       widgets = {
           'gender': widgets.RadioSelect()
       }
кайф, заработало, только вместо просто widgets пришлось писать forms.widgets.RadioSelect()
но это наверно, потому что я полностью модуль forms импортирую
но тогда другой вопрос, а как задать инишал значение и самое главное, он откуда-то берет значение с кучей тире ——— и рисует третью кнопку
источник

DT

Dan Tyan in Django [ru] #STAY HOME
ты widgets можешь отдельно импортировать ;)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
у тебя походу gender null=True
источник

DT

Dan Tyan in Django [ru] #STAY HOME
поле
источник