Size: a a a

Django [ru] #STAY HOME

2021 June 07

AK

Alex K. in Django [ru] #STAY HOME
Доброго дня. Есть такая форма, использующаяся в CBV, наследующем от views.generic.CreateView:

class CreateServicesAdForm(forms.ModelForm):
   class Meta:
       model = models.ServiceAdvert
       exclude = ["seller"]

Где seller - это поле в модели ServiceAdvert, внешний ключ на прокси-модель для User. Подразумевается, что seller будет подтягиваться из request.user, а при рендере формы отображаться не будет. Пробовал во вьюхе переопределить get_initial, подставляя request.user туда, но похоже, что раз это поле в форме исключено - то и в initial оно игнорируется. Если в Meta заменить exclude = ["seller"] на fields = "__all__" и указать seller = forms.HiddenInput(), то поле выводится как dropdown (хотя по идее должно бы выводиться как <input type="hidden">). Конечная цель - не давать юзеру возможность выбрать значение поля seller, а заполнять его автоматически, основываясь на request.user. Что я делаю не так, и куда с этим можно копнуть?
источник

CR

CocoaRocket Rocket 🚀... in Django [ru] #STAY HOME
разобралси =))) блин человек из своих уст куда понятнее может растолковать в двух словах как работает что-то, чем статьи документаций на кучу страниц.
источник

D

Dan in Django [ru] #STAY HOME
Привет, привету пример как у меня реализован Хидден инпут
источник

D

Dan in Django [ru] #STAY HOME
class LoginForm(forms.Form):
   d_width = forms.CharField(required=False)
   d_height = forms.CharField(required=False)
  def init(self, *args, **kwargs):
       super(LoginForm, self).init(*args, **kwargs)
       self.fields['d_width'].widget = forms.HiddenInput()
       self.fields['d_height'].widget = forms.HiddenInput()
источник

D

Dan in Django [ru] #STAY HOME
в Шаблоне всё просто
{% for field in form %}
                   {{ field }}
               {% endfor %}
источник

AK

Alex K. in Django [ru] #STAY HOME
Интересно. Выходит, что если просто в описании формы вписать field_name = forms.HiddenInput(), то оно его игнорирует? х)
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
if form.is_valid():
   obj = form.save(commit=False)
   obj.seller = request.user
   obj.save()
источник

JT

James Town in Django [ru] #STAY HOME
Я об этом всегда всем говорю.
источник

D

Dan in Django [ru] #STAY HOME
ну хз) давно с этим мучался, где-то нарыл такое решение, что нужно пихать в Виджет)
источник

PA

Pavel Aksenov in Django [ru] #STAY HOME
Немного поправлю
    def form_valid(self, form):
       obj = form.save(commit=False)
       obj.seller = self.request.user
       obj.save()
источник

AK

Alex K. in Django [ru] #STAY HOME
Ага, вот это больше похоже на то, что мне нужно. Огромное спасибо!
источник

D

Dan in Django [ru] #STAY HOME
ну да, логичнее решать это на Беке)
у меня лиш решение с ХидденИнпутом)
источник

KK

Kenenbaeva Karlygach in Django [ru] #STAY HOME
привет. кто-нибудь делала телеграм бота при помощи джанго?
источник

I

Itachi in Django [ru] #STAY HOME
Я связал жалобы к боты (юзер пишет жалобу на сайте если ему что то не нрав, и это приходит в телегу)
источник

АМ

Алмат Муратұлы... in Django [ru] #STAY HOME
здравствуйте, это коментарии под html страничкой, комментарии пишутся POST обрабатываеться, но данные в админку не записываються, подскажите пожайлуйста, https://dpaste.org/LfAD#L2
источник

DN

Damir Nafikov in Django [ru] #STAY HOME
привет)
пишу тесты, хочу замокать внутренние поля у инстанса
то есть, у меня есть строка
self.homework.timer
self - инстанс модели StudentHomework
homework -  это FK
timer -  просто время
вот не могу достать до timer с помощью моков
пытаюсь как-то через
with patch.object(
   StudentHomework,
   'homework',
   return_value=MagicMock(...)
)

я могу замокать лишь homework, но как замокать определенное поле, кто знает?👀
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
замокать сначала объект, а потом поле
источник

DN

Damir Nafikov in Django [ru] #STAY HOME
вот не могу понять, как это прописать, можешь, пожалуйста, расписать?
источник

NC

Nikolay Cherniy in Django [ru] #STAY HOME
obj = Mock()
obj.field = Mock()
источник

DN

Damir Nafikov in Django [ru] #STAY HOME
аааа
жесть, понял, спасибо)
источник