Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 18, 2010 14:17:43

anbu
От:
Зарегистрирован: 2010-12-17
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

формы и модели

Привет!
меня уже несколько дней мучает вопрос - “Можно ли формам работать с моделью, в которой есть ФК?”


вот модели:

class Client(models.Model):
name = models.CharField(max_length=50)
fname = models.CharField(max_length=50)
oname = models.CharField(max_length=50)

class Car(models.Model):
client = models.ForeignKey(Client)
marka = models.CharField(max_length=50)
nomer = models.CharField(max_length=6)

def __unicode__(self):
return u"%s" % self.nomer
вот форма:
class CarForm(forms.ModelForm):
client = forms.CharField()
marka = forms.CharField()
nomer = forms.CharField()

class Meta:
model = Car
у меня такое чувство, что нельзя..
можете тогда подсказать, как сделать форму для данного примера?

Заранее благодарен!



Офлайн

#2 Дек. 18, 2010 16:05:53

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

формы и модели

anbu
“Можно ли формам работать с моделью, в которой есть ФК?”
Да, может.

anbu
можете тогда подсказать, как сделать форму для данного примера?
Какого примера. Что вы хотите сделать?



Офлайн

#3 Дек. 18, 2010 20:23:36

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

формы и модели

anbu
у меня такое чувство, что нельзя..
Неправильное у Вас чувство. Вполне можно, более того, из-за удобной генерации форм из моделей джангу больше всего любят. Если вам просто нужно создать форму на основе моделей - то сделать это просто

class CarForm(forms.ModelForm):
class Meta:
model = Car
В этом случае будет создана форма со значениями полей для модели по умолчанию. Например для ForeignKey в Вашем случае будет select, для остальных полей - text. Переопределение полей, как у Вас написано, имеет смысл только, если Вы хотите, изменить какие-то характеристики поля формы, которые должны быть отличны от дефолтных, например определить специальные атрибуты поля ввода, стиль, максимально допустимая длина и т.д. В большинстве случаев переопределение не требуется.

Ну и client = forms.CharField() - это совсем неправильно.

В общем, читайте букварь - http://docs.djangoproject.com/en/dev/topics/forms/modelforms/
По ForeignKey в формах - http://docs.djangoproject.com/en/dev/ref/forms/fields/#fields-which-handle-relationships



Офлайн

#4 Дек. 18, 2010 21:06:22

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

формы и модели

Уберите поле client из формы Вашего примера и сами посмотрите.

Офлайн

#5 Дек. 18, 2010 22:54:49

anbu
От:
Зарегистрирован: 2010-12-17
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

формы и модели

ziro
class CarForm(forms.ModelForm):
class Meta:
model = Car
В этом случае будет создана форма со значениями полей для модели по умолчанию. Например для ForeignKey в Вашем случае будет select, для остальных полей - text. Переопределение полей, как у Вас написано, имеет смысл только, если Вы хотите, изменить какие-то характеристики поля формы, которые должны быть отличны от дефолтных, например определить специальные атрибуты поля ввода, стиль, максимально допустимая длина и т.д. В большинстве случаев переопределение не требуется.
спасибо)

ziro
Ну и client = forms.CharField() - это совсем неправильно.
Ferroman
Уберите поле client из формы Вашего примера и сами посмотрите.
да, тут я ошибся) просто были другие формы, где я указал виджет SelectWidget(choices=..), а здесь, видимо, просто не вставил)
но все равно так не работало.. попробую сделать как описано выше))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version