Делается сайт для агентства недвижимости, условно есть 5 моделей это:
Заявка, Агент, Клиент, Квартира, Дом
Нужно сделать страницу на которой можно будет сразу занести информацию в форму Заявки и в зависимости от выбранного типа недвижимости в форму Квартиры или Дома. Тобишь менялась динамически тк поля поля у моделей разные. Городить кучу ссылок под каждый тип вижу не правильным.
Правильно ли я смотрю в сторону Js и как сделать правильней. Внешка на Bootstrap.
Сейчас есть создание квартиры и привязка к заявке, просто последовательный вывод двух форм.
Всем заранее спасибо
model.py
<pre><code>
from django.db import models
from django.urls import reverse
import uuid
from django.contrib.postgres.fields import ArrayField
from phonenumber_field.modelfields import PhoneNumberField
class Agent(models.Model):
name=models.CharField(max_length=50)
post=models.CharField(max_length=40)
phone_number=PhoneNumberField(unique=True)
class Client(models.Model):
agent=models.ForeignKey( Agent ,default=1, on_delete = models.SET_DEFAULT )
name=models.CharField(max_length=40)
phone_number=PhoneNumberField(unique=True)
class Flat(models.Model):
re_id=models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
room_c=models.PositiveSmallIntegerField(verbose_name="Кол-во комнат")
floor=models.PositiveSmallIntegerField(verbose_name="Этаж")
class Home(models.Model):
re_id=models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
home_area=models.PositiveSmallIntegerField(verbose_name="Площадь дома")
floors=models.PositiveSmallIntegerField(verbose_name="Этажей в доме")
class Obj(models.Model):
agent=models.ForeignKey(Agent, verbose_name="Агент", on_delete=models.DO_NOTHING)
client=models.ForeignKey(Client, verbose_name="Клиент", on_delete=models.DO_NOTHING)
d_type_ch=( #тип сделки
('sale','Продажа'),
('rent','Аренда'),
)
r_type_ch=( #тип родажи или аренды
('day','Посуточно'),
('months','Помесячно'),
('long','Долгосрочная'),
)
s_type_ch=(
('direct','Прямая'),
('alter','Альтернатива'),
)
source_ch=( #Источник лида
(1,'Входяший звонок'),
(2,'Исходящий звонок'),
(3,'Наш сайт'),
(4,'Сторонний сайт'),
(5,'По знакомству'),
(6,'Самостоятельный поиск'),
)
real_ch=( #тип недвижимости
(1,'Квартира'),
(2,'Дом'),
(3,'Земельный участок'),
(4,'Коммерч'),
(5,'Гараж'),
)
real=models.PositiveSmallIntegerField(choices=real_ch)
region=models.CharField(max_length=40)
district=models.CharField(max_length=60) #район\округ
location=models.CharField(max_length=60) # населенный пункт
street=models.CharField(max_length=60)
apartment=models.CharField(max_length=10)
comments=models.TextField() #Служебный комментарий
#cadastral_number=models.CharField(max_length=10, null=True, blank=True) #Кадастровый номер
coast=models.PositiveIntegerField(verbose_name="Начальная стоимость") #Стоимость 0=min 1=max
source=models.PositiveSmallIntegerField(choices=source_ch,null=True, blank=True) #источник
d_type=models.CharField(max_length=20, choices=d_type_ch) #тип родажа или аренда
r_type=models.CharField(max_length=20,null=True, blank=True, choices=r_type_ch) #тип Аренды
s_type=models.CharField(max_length=20,null=True, blank=True, choices=s_type_ch) #тип Продажи
Flat=models.ForeignKey(Flat,null=True, blank=True, verbose_name="Квартира", on_delete=models.DO_NOTHING)
Home=models.ForeignKey(Home, null=True,blank=True, verbose_name="Дом", on_delete=models.DO_NOTHING)
</code></pre>
views.py
<pre><code>
def add_realty(request):
if request.method=='POST':
flatform=FlatForm(request.POST)
objform=ObjForm(request.POST)
if flatform.is_valid():
flat=flatform.save()
obj=objform.save(commit=False)
obj.foreignkeytoA=flat
obj.save()
#Flat.objects.create(**flatform.cleaned_data)
return redirect('obj')
else:
objform=ObjForm()
flatform=FlatForm()
return render (request, "firstapp/addrealty.html", {'objform':objform , 'flatform':flatform})
</code></pre>
form.py
<code><pre>
from django import forms
from .models import Obj,Flat,Home
class FlatForm (forms.ModelForm):
class Meta:
model=Flat
fields='all'
class ObjForm (forms.ModelForm):
class Meta:
model=Obj
fields='all'
</code></pre>
Updated 11 April 2021, 19:12 by nikvolk1998.