Thanks for your reply.. Each Acesso have a sector which is Unique. Acesso`s _unicode is SECTOR. When I set for the first time values for this rule(Acesso), the dictionary come without values for genres.
Example: Acesso is empty now. Enter in Admin/Acesso and set values: Sector = 'Development' Forbidden = 'Porn', 'Sports' Free = 'News' and save. The dictionary should returns: dic = {'Development': {'forbidden':['Porn', 'Sports'], 'free': ['News']}} but return: dic = {'Development': {'forbidden':[], 'free':[]}} and return empty values for each new save. I'm using postgresql. On Aug 1, 2:54 pm, bruno desthuilliers <bruno.desthuilli...@gmail.com> wrote: > On 1 août, 17:16, eduardoorige <eduardo.or...@gmail.com> wrote: > > > Good morning people. > > I made a signal that plays m2m table values to a dictionary. > > For example: > > > dic = {'SECTOR': {'forbidden': [Genres ,...], 'released': > > [Genres ,...]}} > > > There is a table of company sectors, each of these sectors has > > access rules prohibited and released. The genres are content that > > staff can not access, for example pornography, sports, > > etc ... > > > When this rule except for the FIRST TIME, I get the SECTORS but > > Gender is empty. > > dic = {'FINANCIAL: {' forbidden ': [],' released ': []}} > > What do you mean by "the first time" ? > > > Here's the function that fulfills this dictionary: > > > def dic_acesso(): > > regra = Acesso.objects.filter(status=True) > > dic_acesso = {} > > for ind in regra: > > ind_s = str(ind) > > I assume your Acesso model has some field like "name" or "label" or > whatnot. Using this attribute might help wrt/ readabily, robustness > *and* performances. > > > dic_acesso[ind_s] = {} > > lista_genero_proibido = [] > > lista_genero_liberado = [] > > for gp in ind.proibido.all(): > > lista_genero_proibido.append(str(gp)) > > for gl in ind.liberado.all(): > > lista_genero_liberado.append(str(gl)) > > Same remark as above, and this time you could save a *lot* of overhead > using Queryset.values_list - you could get the full list in one single > call and avoid uselessly building full model instances. > > Assuming the field used for Acesso.__unicode is named "sector" and the > field used by Genero.__unicode__ is named 'label', the whole function > would look like this: > > def get_dic_acesso(): > regra = Acesso.objects.filter(status=True) > dic_acesso = {} > for ind in regra: > dic_acesso[ind.name] = { > "proibido": ind.proibido.values_list('label', flat=True), > "liberado": ind.liberado.values_list('label', flat=True) > } > return dic_acesso > > Now this obviously won't solve your problem, but since your function > should work as it is (at least I didn't spot any logic error), I think > the problem is elsewhere, and probably depends on what you mean by > "the first time" (or when and where this "first time" append, etc). > Just a hint: if you're using MySQL, the default isolation level can > lead to rather suprinsing behaviours... > > My 2 cents... -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.