python - 如何在 DetailView 模板中添加一个将 ID 发送到表单的按钮?
问题描述
我有一个名为“属性”的应用程序,并且我创建了一个正在工作的 DetailView。在我的属性模型中,我有一个属性模型和一个带有属性外键的卧室模型。
#views.py
class PropertyDetailView(DetailView):
template_name = 'properties/property-detail.html'
model = Property
def get_context_data(self, **kwargs):
contacts = ContactsOwner.objects.filter(owner__property=self.object)
context = super().get_context_data(**kwargs)
context['contact'] = contacts
return context
我的模型.py:
class Property(models.Model):
property_reference = models.CharField(db_column='Property_Reference', max_length=10) # Field name made lowercase.
address = models.CharField(db_column='Address', max_length=250, blank=True, null=True) # Field name made lowercase.
post_code = models.CharField(db_column='Post_Code', max_length=15, blank=True, null=True) # Field name made lowercase.
type = models.CharField(db_column='Type', max_length=25, blank=True, null=True, choices=HOUSE_TYPE_CHOICES) # Field name made lowercase.
bedrooms = models.IntegerField(db_column='Bedrooms', blank=True, null=True) # Field name made lowercase.
bathrooms = models.IntegerField(db_column='Bathrooms', blank=True, null=True) # Field name made lowercase.
usual_cleaning_requirements = models.CharField(db_column='Usual_Cleaning_Requirements', max_length=250, blank=True, null=True) # Field name made lowercase.
notes = models.CharField(db_column='Notes', max_length=500, blank=True, null=True) # Field name made lowercase.
feature_image = models.ImageField(null=True)
class Meta:
db_table = 'Property'
def __str__(self):
return self.property_reference
def get_absolute_url(self):
return reverse("properties:property_detail",kwargs={'pk':self.pk})
class Bedroom(models.Model):
type = models.CharField(db_column='Type', choices=BEDROOM_TYPE_CHOICES, max_length=50)
bed_dimensions = models.CharField(db_column='Bed_Dimension', choices=BED_DIMENSION_CHOICES, max_length=30)
image = models.ImageField(null=True, blank=True)
ensuite = models.BooleanField(default=False)
notes = models.CharField(db_column='Notes', max_length=500, blank=True, null=True) # Field name made lowercase.
property = models.ForeignKey(Property, null=False, on_delete=models.CASCADE, related_name='bedroom')
我需要的是在模板“property-detail.html”中创建一个名为“Add Bedroom”的按钮,它将我发送到一个带有预填充外键的表单。你能帮我解决这个问题吗?
解决方案
您需要将该按钮提交重定向到获取所需信息的视图,然后将其重定向到另一个模板,其中包含您收到的信息的上下文(您的外键本身)
推荐阅读
- r - 基于R中现有数据框中观察值之间的链接的新数据框
- c++11 - Switch 语句的大 O 在其 Case 中具有函数调用?
- python - 为什么我在 facenet 中收到此错误?
- rust - 为什么在 if let 中添加分号可以避免借用检查器错误?
- python - 为什么这个脚本在 Python 中这么慢?
- neo4j - Neo4j Cypher 匹配没有找到它应该的节点
- git - git中的用户访问控制
- python - 将参数传递给 python 脚本的问题
- generics - 你能写一个通用函数来比较任何数字类型(例如int、float、double)和零吗?
- symfony - 在 Symfony Flex / Symfony 4 的同一台机器上测试和开发环境