Disons que j'ai modèle suivant:Django: Appel delete() méthode uniquement() soulever exception DoesNotExist
class Student(models.Model):
name = models.CharField(max_length = 100)
...
Quand je suis en train d'appeler supprimer() méthode sur seulement() comme :
Student.object.filter(pk__in=[1, 5, 6]).only('id', 'name').delete()
Je reçois l'erreur suivante:
DoesNotExist: Student matching query does not exist
Ma question est: ne pouvons-nous pas appeler delete() sur only()?
Note: Nous n'utilisons que() sur la méthode get_queryset() de l'administrateur Django pour de meilleures performances.
Pour votre information, mon admin ressemble:
class StudentAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(StudentAdmin, self).get_queryset(request)
return qs.only('id', 'name', ...)
Lorsque nous essayons de supprimer des objets de Admin, nous obtenons cette erreur.
Quel est le principal domaine pour le modèle? Django utilise la clé primaire pour interagir avec les objets. Vous pourriez ne pas l'inclure dans 'only()' –
DoesNotExists n'est levé que dans 'Model.objects.get()'. Donc, si vous aviez écrit le même code avec plus tôt, votre serveur a-t-il été redémarré? si le problème persiste après le redémarrage, supprimez tous les fichiers * .pyc. J'ai essayé de supprimer avec seulement et cela a bien fonctionné pour moi. Malheureusement, je ne peux pas le poster ici pour vous. –
@ThulasiRam, je pense, vous avez mal compris la question. Je parlais de la méthode [only()] (https://docs.djangoproject.com/en/1.10/ref/models/querysets/#only) –