Actually, due to the formulation of problem, the solver is always placing the item only on the edges, adding one more constraint helped to solve the issue:
m.constraints.append(node_p_var_dict[p][(0, shelf)] + node_p_var_dict[p][((section_width*bay_count)-1, shelf)] <= 1)