使用Django,在Admin中表示外键

时间:2014-05-23 20:18:56

标签: python django

构建一个通用应用程序来练习使用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)

我希望正确表示一对多(一个房子可以有多次访问)。

2 个答案:

答案 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,它应该创建一个元组