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


вот модели:
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
у меня такое чувство, что нельзя..
можете тогда подсказать, как сделать форму для данного примера?

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

anbu
можете тогда подсказать, как сделать форму для данного примера?
Какого примера. Что вы хотите сделать?
ziro
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
Ferroman
Уберите поле client из формы Вашего примера и сами посмотрите.
anbu
ziro
class CarForm(forms.ModelForm):
class Meta:
model = Car
В этом случае будет создана форма со значениями полей для модели по умолчанию. Например для ForeignKey в Вашем случае будет select, для остальных полей - text. Переопределение полей, как у Вас написано, имеет смысл только, если Вы хотите, изменить какие-то характеристики поля формы, которые должны быть отличны от дефолтных, например определить специальные атрибуты поля ввода, стиль, максимально допустимая длина и т.д. В большинстве случаев переопределение не требуется.
спасибо)

ziro
Ну и client = forms.CharField() - это совсем неправильно.
Ferroman
Уберите поле client из формы Вашего примера и сами посмотрите.
да, тут я ошибся) просто были другие формы, где я указал виджет SelectWidget(choices=..), а здесь, видимо, просто не вставил)
но все равно так не работало.. попробую сделать как описано выше))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB