Форум сайта python.su
Подскажите, как сделать одну форму с полями из двух моделей.
Я использую стандартную модель 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
Офлайн
Ну можно например замиксовать две модели,
и по этой замиксованной модели построить форму.
Офлайн
Norecces, пример пожалуйста.
Офлайн
class Manufacturer(models.Model):
# ...
class Car(models.Model):
manufacturer = models.ForeignKey(Manufacturer)
# ...
Офлайн
Задача. Создание 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>
Офлайн