python - 如何在一个视图上使用两个模型表单
问题描述
我还是 django 的新手,我正在做一个项目,我需要用户输入一些关于他们想要出租的房屋的信息。我希望用户至少上传 6 张图片,根据我收集的内容,在 django 上执行此操作的最佳方法是使用两种模型,一种收集有关房屋的基本信息,第二种存储房屋的图像。我应该如何编写views.py。我已经尝试了一切无济于事。
表格.py
class MyHouseEditForm(forms.ModelForm):
class Meta:
model = Myhouses
fields = ('name_of_accomodation',
'type_of_apartment','Number_of_rooms', 'house_rent',
'availability', 'location', 'nearest_institution',
'description',)
class ImageForm(forms.ModelForm):
class Meta:
model = Image
fields = ('__all__' )
模型.py
class Myhouses(models.Model):
Available = 'A'
Not_Available = 'NA'
Availability = (
(Available, 'Available'),
(Not_Available, 'Not_Available'),
)
Flat = 'F'
Self_contained = 's'
Bungalow = 'b'
Mini_flat = 's'
Duplex = 'D'
Room = (
(Flat, 'Flat'),
(Self_contained, 'Self_contained'),
(Bungalow, 'Bungalow'),
(Mini_flat, 'Mini_flat'),
(Duplex, 'Duplex'),
)
time = models.DateTimeField(default = datetime.now, blank = True)
name_of_accomodation = models.CharField(max_length=20)
type_of_apartment = models.CharField(max_length=2, choices=Room, )
Number_of_rooms = house_rent = models.IntegerField()
house_rent = models.IntegerField()
availability = models.CharField(max_length=2, choices=Availability, default=Available,)
location = models.CharField(max_length=200)
nearest_institution = models.CharField(max_length=200)
description = models.TextField(blank=True)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True, related_name='author')
def __str__(self):
return self.name_of_accomodation
def get_absolute_url(self):
return reverse('search-detail', args=[str(self.id)])
class Meta:
ordering = ["-time"]
class Image(models.Model):
myhouses = models.ForeignKey(Myhouses, related_name='images', on_delete=models.PROTECT)
image = models.ImageField(upload_to='documents/')
视图.py
def addlisting(request):
if request.method == 'POST':
Hform = MyHouseEditForm(request.POST, files=request.FILES, )
Iform = ImageForm(request.POST, request.FILES, )
if Hform.is_valid() and Iform.is_valid():
Houses = Hform.save(commit=False)
Houses.author=request.user
Houses.save()
image = iform.save(commit=False)
Houses.image.myhouses = myhouses
Houses.save()
messages.success(request, 'Listing Created Succesfully successfully')
return redirect('addlisting')
else:
Hform = MyHouseEditForm()
Iform = ImageForm()
return render(request, 'houses/addlisting.html', {'Hform':Hform, 'Iform': Iform}, )
解决方案
推荐阅读
- interface - 从 ODI 11G 中的场景或包中重新生成丢弃的接口
- python - 将 Python 版本更改为 3.4 Anaconda - UnsatisfiableError
- php - 如何读取选定选项的值并将其动态附加到另一个选择框
- vba - 如何在 Outlook (O365) 中使用 VBA 归档“对话历史记录”文件夹的内容?
- r - 如何在 R 中的不同组上运行 for 循环
- charts - 在 Datastudio 图表中指示数据集某些部分的动态性质
- javascript - 点击后如何从购物车中删除商品?
- android - 我们可以在 Android 中不要求就获得危险的权限吗?
- r - 如何在 rmd 文件中使用循环编织 flextable
- database - Cassandra:sstabledump 输出