• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

HecKel

[django] Criar "filtro" em combobox no painel de Admin

7 mensagens neste tópico

Boas!

Vou ser sucinto :thumbsup:

Tenho um modelo "Region" que vai armazenar Cidades, Países, Continentes, etc. E tenho um modelo Member que tem um campo designado como city que está associado ao modelo Regions.

Não posso separar as cidades das regiões, senão deixa de fazer sentido no resto do projecto!

Como fazer para, tanto no painel de admin como no registo de utilizadores aparecerem-me apenas as cidades?

Deixo-vos aqui o meu modelo Region e Member:

class Region(models.Model):
   TYPE_CHOICES = (
       (u'R', u'Região'),
       (u'P', u'País'),
       (u'C', u'Cidade'),
   )
   name = models.CharField(max_length=60)
   type = models.CharField(max_length=2, choices=TYPE_CHOICES)
   uplevel = models.ForeignKey('self', null=True, blank=True)

   def __unicode__(self):
       return self.name

class Member(models.Model):
   bdate = models.DateField()
   city = models.ForeignKey(Region)
   user = models.ForeignKey(User, unique=True)

   def __unicode__(self):
       return self.user.username

Agradeço ajuda!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho que não entendi o que queres ...

Queres filtrar os campos do modelo Member que aparecem no Admin?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quero filtrar as opções que aparecem no campo cidade, quando estou a adicionar ou a editar um membro.

O campo cidade está ligado a um modelo que agrupa regiões (continentes), países e cidades mas apenas quero associar o utilizador às cidades, não quero que seja possível um utilizador possa escolher "Europa" ou "Portugal", quero que as opções sejam apenas cidades!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se calhar numa form tua, deve dar assim:

city= forms.ModelMultipleChoiceField(queryset=Region.objects.filter(type='c')) 

Já no admin... :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ForeignKey.limit_choices_to

A dictionary of lookup arguments and values (see Making queries) that limit the available admin choices for this object. Use this with functions from the Python datetime module to limit choices of objects by date. For example:

limit_choices_to = {'pub_date__lte': datetime.now}

only allows the choice of related objects with a pub_date before the current date/time to be chosen.

Instead of a dictionary this can also be a Q object (an object with a get_sql() method) for more complex queries.

limit_choices_to has no effect on the inline FormSets that are created to display related objects in the admin.

Experimenta na class member:

 city=models.ForeignKey(Region, limit_choices_to={'type':'c'}) 

PS: Nunca experimentei nenhuma das dicas que dei ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu hoje tenho estado um bocado ocupado demais com o trabalho..., ainda não tive tempo de experimentar nada disso :-[

Amanhã tento dar feedback, thanks a lot :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora