构建一个通用应用程序来练习使用Django进行学习。
模型中的两个类:
class HouseInformation(models.Model):
house_name = models.CharField(max_length=200)
house_type = models.CharField(max_length=40)
address = models.CharField(max_length=200)
latitude = models.CharField(max_length=200)
longitude = models.CharField(max_length=200)
def __str__(self):
return self.house_name
class HouseReport(models.Model):
the_house = models.ForeignKey(HouseInformation)
visit_date = models.DateField()
在管理员视图中,我希望查看带有访问日期的房屋列表。到目前为止admin.py是这样的,它不起作用:
from django.contrib import admin
from housing.models import HouseInformation
from housing.models import HouseReport
class HouseReport(admin.ModelAdmin)
list_display = ('the_house')
admin.site.register(HouseInformation, HouseReport)
我希望正确表示一对多(一个房子可以有多次访问)。
答案 0 :(得分:1)
问题是缺少:
:
class HouseReport(admin.ModelAdmin):
^
说到您最初想要解决的任务,请查看InlineModelAdmin
课程:
管理界面可以在同一页面上编辑模型 父模型。这些被称为内联。
将其添加到admin.py
:
from django.contrib import admin
from housing.models import HouseInformation, HouseReport
class HouseReportInline(admin.TabularInline):
model = HouseReport
class HouseAdmin(admin.ModelAdmin):
inlines = [
HouseReportInline,
]
admin.site.register(HouseInformation, HouseAdmin)
您会在House
管理页面上看到HouseReport
信息以及与House
相关联的所有House
。
答案 1 :(得分:1)
你忘记了:在第5行的课程定义之后
class HouseReport(admin.ModelAdmin):
你必须写
...
list_display = ('the_house',)
...
注意尾随的逗号?它告诉python,它应该创建一个元组