避免在django admin中重复Foreigkey

时间:2012-07-03 10:27:15

标签: django django-admin

我有一个这样的模型:

class UserAdress(models.Model):
     user = models.ForeignKey(MyUser)
     area = models.ForeignKey(Area)

在管理员中:

class UserAdressAdmin(models.Model):
     list_display = ['user','area']

管理员列出了用户的所有区域。:

user1         area1
user1         area2
user2         area1
user2         area2

有没有办法像这样展示?

<a href='link to all user1 areas'>user 1</a>
<a href='link to all user2 areas'>user 2</a>

提前致谢

1 个答案:

答案 0 :(得分:1)

您可能需要重新定义模型和关系 - 可能使用其他一些关系类型。所以你可以在管理模型中添加类似的东西(不是admin.ModelAdmin?):

class UserAddressAdmin(admin.ModelAdmin):

    def user_areas(self, obj):
        areas = Area.objects.filter(pk__in=UserAddress.objects.filter(user=obj.user).values("area__id"))
        return "<a href='%s'>%s</a>" % (
            reverse("reverse_to_areas"), obj.user.username)
    user_link.allow_tags = True

    list_display = ['user_areas','area']