Dopo tanto google non ho trovato alcuna soluzione pertinente per ottenere i dati dei modelli associati nelle viste.In Django 1.6.x come ottenere i dati dei modelli associati nelle viste?
Le cose sono che sto richiedendo al server tramite Ajax e voglio recuperare il nome del creatore di cartelle e cartelle (dal modello Utente). Ma non mi ha restituito il first_name del creatore. Ecco il codice
models.py
class UserFolder(models.Model):
creator = models.ForeignKey(User)
name = models.CharField(blank=False, max_length=150)
is_shared = models.BooleanField(default=False)
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
views.py
def pagination(obj, request):
max = request.GET.get('max') if 'max' in request.GET else 1
paginator = Paginator(obj, max) # Show 25 contacts per page
page = request.GET.get('page')
try:
return paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
return paginator.page(1)
except EmptyPage:
return ""
def folder_list(request): #called via ajax
folders = UserFolder.objects.filter(creator=request.user.id).order_by('-modified_date')
folders = pagination(folders, request) #for pagination
folders = json.dumps({}) if not folders else serializers.serialize("json", folders)
return HttpResponse(folders)
Ho cercato .select_related ('creatore') troppo ma c'è bisogno d 'funzionare.
In js sto andare a prendere i dati in questo modo:
$.each(data, function(i, v) {
var t = fldrTpl, id = v.pk;
v = v.fields
t = t.replace(/\{(ID)\}/g, id);
t = t.replace(/\{(NAME)\}/g, v.name);
t = t.replace(/\{(C_SIZE)\}/g, (v.current_size == null?0:v.current_size));
t = t.replace(/\{(C_ID)\}/g, v.creator.first_name);
t = t.replace(/\{(C_DATE)\}/g, v.created_date);
$(".my-folder-table").append(t);
});
v.creator.first_name tornare sempre indefinito.
Qualsiasi aiuto sarebbe molto apprezzato.
Grazie
non dovrebbe essere folders = UserFolder.objects.filter (creator = request.user) invece di request.user.id. request.user è un'istanza dell'utente mentre .id produce un numero intero. – user2707389
Grazie per il tuo commento Ma ho provato anche questo e anche questo non ha funzionato. Restituisce solo i campi di UserFolders. –
La voce first_name è stata testata sul modello User e ci fornisce anche i dettagli del modello dell'utente. –