2012-07-03 2 views
0

J'ai un modèle comme celui-ci:Évitez répétition Foreigkey dans django admin

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

Dans admin:

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

listes Admin tous de la région pour les utilisateurs .:

user1   area1 
user1   area2 
user2   area1 
user2   area2 

est-il un moyen de montrer comme ça?

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

Merci à l'avance

+1

Une solution pourrait être si vous faites '' user' uniques = TRUE' et changer la 'relation area' à 'manytomany'. Ensuite, vous avez des utilisateurs uniques dans la liste, ayant leurs domaines dans les détails. droite? – Ahsan

+0

@Ahsan, merci beaucoup pour l'aide. Mais je ne suis pas autorisé à chenge le modèle. – TheNone

Répondre

1

Vous auriez probablement besoin de redéfinir les modèles et les relations - en utilisant peut-être un autre type de relation. Ainsi, vous pouvez ajouter quelque chose comme ça dans votre modèle d'administration (est-ce pas 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']