Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 21, 2010 20:21:44

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

Одна форма от нескольких моделей

Подскажите, как сделать одну форму с полями из двух моделей.
Я использую стандартную модель User и расширение UserProfile:

class UserProfile(models.Model):
user = models.OneToOneField(User)

avatar = models.ImageField('Фотография', upload_to = 'users/', null=True)
description = models.CharField('О себе', max_length = 300, blank = True)
telephone = models.CharField('Телефон', max_length = 11, blank = True)
city = models.ManyToManyField(City)
street_house = models.CharField('Улица, дом', max_length = 35, blank = True)
flat = models.PositiveIntegerField('Квартира', null=True)

def __unicode__(self):
return self.user
Необходимо, чтобы в одной форме на странице редактирования профиля юзера были и некоторые поля из User и из UserProfile.



Офлайн

#2 Июнь 22, 2010 10:25:17

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

Одна форма от нескольких моделей

Ну можно например замиксовать две модели,
и по этой замиксованной модели построить форму.



Офлайн

#3 Июнь 22, 2010 10:32:38

Mutagena
От:
Зарегистрирован: 2009-10-18
Сообщения: 295
Репутация: +  0  -
Профиль   Отправить e-mail  

Одна форма от нескольких моделей

Norecces, пример пожалуйста.



Офлайн

#4 Июнь 22, 2010 10:43:34

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

Одна форма от нескольких моделей

class Manufacturer(models.Model):
# ...

class Car(models.Model):
manufacturer = models.ForeignKey(Manufacturer)
# ...
http://docs.djangoproject.com/en/1.2/topics/db/models/#topics-db-models

там все подробно описано.

и я не уверен что это самый простой способ, если поискать
то наверняка можно найти более простой и более “джанговский” способ.



Офлайн

#5 Июнь 25, 2010 00:16:56

Arceny
От:
Зарегистрирован: 2010-03-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Одна форма от нескольких моделей

Задача. Создание HTML формы, работающей с несколькими моделями.

#in forms.py
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ["username", "email"]

class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile

#in views.py
def add_user(request):
...
if request.method == "POST":
uform = UserForm(data = request.POST)
pform = UserProfileForm(data = request.POST)
if uform.is_valid() and pform.is_valid():
user = uform.save()
profile = pform.save(commit = False)
profile.user = user
profile.save()
....
...

#in template
<form method="post">
{{ uform.as_p }}
{{ pform.as_p }}
<input type="submit" ...>
</form>
http://habrahabr.ru/blogs/django/81632/



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version