Ben burada yapmak istediğim şey için doğru bir çözüm geliştirmek üzere mücadele ediyorum ve gerçekten yardıma takdir ediyorum. Şu anda Django: get_object_or_404 doğru çözüm değil, ne var?
, ben db bir "Özel" alır ve tarayıcıda görüntüleyen bir çalışma sistemi var. Kullanıcı tarayıcıdaki "Özel" i düzenleyebilir ve db’ye gönderebilir. Bu değişiklik kullanıcıya gösterilir.sorun db hiçbir önceden varolan "Özel" varsa, "Özel" güncelleme olmayacak olmasıdır. Benim views.py ben vardır:
def changeSpecialOffer(theRequest):
myProductUuid = theRequest.POST['myProductUuid']
myNewSpecialOffer = theRequest.POST['myNewSpecialOffer']
myProduct = get_object_or_404(Product, uuid=myProductUuid)
myActiveSpecial = get_object_or_404(SpecialOffer.objects.filter(product=myProduct).filter(
active=True))
try:
myActiveSpecial.special = myNewSpecialOffer
myActiveSpecial.save()
except:
return HttpResponse(myActiveSpecial, mimetype='text/plain')
myActiveSpecial = SpecialOffer.objects.filter(product=myProduct).filter(
active=True)
return HttpResponse(myActiveSpecial, mimetype='text/plain')
Ben get_object_or_404
doğru bir 404 hatası döndürmesi nedeniyle hiçbir önceden varolan "Özel" Orada olduğu gibi "özel" güncellenmesi çalışmıyor sebebi olduğunu biliyoruz db.
ben db varolan "Özel" olduğu durumlarda işlevini bozmadan bu sorunu aşmanın en iyi yolu çalışmak için bir süre çalışıyorum.
Şimdiye kadar, bentry
ve
except
ile
get_object_or_404
yerine denedim ama o zaman böyle
'unicode' has no attribute 'save()'
olarak kaydetmek fonksiyon sorunları, içine çalıştırın.
myActiveSpecial, just_created = SpecialOffer.objects.get_or_create(product=myProduct, active=True)
Yoksa böyle bir şey deneyebilirsiniz:
myActiveSpecial = get_object_or_404(SpecialOffer.objects.filter(product=myProduct).filter(
active=True))
ile:
Tamam, şimdi de var: 'myActiveSpecial = SpecialOffer.objects.Filtre (ürün = myProduct) .filter ( aktif = True) dönüş HttpResponse (myActiveSpecial, mimetype = 'text/plain') ' Ama bu daha açık olabilir misin çevrelerinde – Erve1879
yuvarlak gitmek gibi görünüyor," ne gidiyor çevrelerinde yuvarlak "gerçekten demektir? Ayrıca, bana 'myActiveSpecial' 'ı yeniden getirmeniz gerekmiyor. – frnhr
Üzgünüz, çok açıklayıcı değil! Temel olarak, JS işlevini değiştirmek için yeni değeri doğru olarak döndürür, ancak yeni değer db'ye kaydetmez. Sayfayı yeniden yükledikten sonra eski özel gösterilir. Eğer daha sonra özel olanı tekrar güncellemeye çalışırsanız, yeni özel olanı eski olana ekler gibi görünüyor ... Ama yine de saklamıyor. – Erve1879