2017-09-14 1 views
0

Voici les nouveaux modèles de mon application:Django: Comment afficher les données utilisateur appartenant à l'administrateur forme

class Store(models.Model): 
    store_owner = models.ForeignKey(User, null=False, verbose_name='User') 
    store_name = models.CharField(max_length=200, null=False, 
           verbose_name='Store name') 
    store_address_line_1 = models.CharField(max_length=200, null=False, 
              verbose_name='Address line 1') 
    store_address_line_2 = models.CharField(max_length=200, null=False, 
              verbose_name='Address line 2') 
    store_city = models.CharField(max_length=200, null=False, 
            verbose_name='City') 
    store_state = models.CharField(max_length=200, null=False, 
            verbose_name='State') 
    store_zip_code = models.CharField(max_length=200, null=False, 
             verbose_name='Zip/Pin Code') 
    store_country = models.CharField(max_length=200, null=False, 
            verbose_name='Country') 
    store_phone = models.CharField(max_length=12, verbose_name='Phone') 
    store_email = models.EmailField(verbose_name='Email') 
    store_website = models.URLField(verbose_name='Website') 


class StoreDepartment(models.Model): 
    store = models.ForeignKey(Store, verbose_name='Store') 
    department_name = models.CharField(max_length=200, null=False, 
             verbose_name='Department name') 
    department_description = models.TextField(max_length=250, null=False, 
               verbose_name='Description') 

+++++++++

Je ne l'utiliserai Admin défault fourni par django framwork.

J'ai 2 utilisateurs, Pour les deux utilisateurs, j'ai créé des magasins. Mais lorsque j'essaie de créer StoreDepartment, je vois la liste de tous les magasins dans la boîte de sélection créée pour le champ de clé étrangère "Store" dans le modèle StoreDepartment. Comment personnaliser le formulaire par défaut afin que l'utilisateur ne puisse voir que les magasins créés par lui dans la zone de sélection.

Répondre

0

J'ai utilisé le suivant formfield_for_foreignkey dans l'admin du modèle et maintenant il travaille pour moi. L'utilisateur ne peut voir que les magasins qui lui appartiennent.

class StoreDepartmentAdmin(admin.ModelAdmin): 
    list_display = ['department_name', 'store'] 
    ordering = ['id'] 

    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == "store": 
      kwargs["queryset"] =Store.objects.filter(store_owner=request.user) 

    return super(StoreDepartmentAdmin,self).formfield_for_foreignkey(db_field, request, **kwargs)