【发布时间】:2026-02-06 14:35:01
【问题描述】:
我创建了这两个模型:“财产”和“卧室”。我创建了一个基于类的视图 DetailView 来显示属性的详细信息,但现在我不仅需要显示属性的详细信息,还需要显示卧室的详细信息。
# models.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')
我已经创建了这个视图:
class PropertyDetailView(DetailView):
template_name = 'properties/property-detail.html'
model = Property
def get_context_data(self,**kwargs):
context = super().get_context_data(**kwargs)
context['bedrooms'] = Bedroom.objects.get(property = property.property_id)
return context
我一定是做错了什么,因为我还在学习,你能帮帮我吗?
【问题讨论】:
-
你根本不需要
get_context_data方法。在模板中,您可以简单地遍历property.bedroom.all。 -
您应该告诉我们出了什么问题。你看到错误了吗?还有什么? @DanielRoseman 是正确的,但您的问题不完整。此外,当使用模型管理器 (
Bedroom.objects) 获取多个对象时,您不能使用get()(用于单个对象),但您应该使用filter()。 -
@DanielRoseman 非常感谢您的帮助!我会在你的帮助下发布一个答案。
-
@dirkgroten 我会在下一个问题中关注这些事情。我得到的 property_id 不存在。谢谢您的帮助。我在 Daniel Roseman 的帮助下解决了我的问题。
标签: django database django-models django-views