J'ai hérité d'une application créée avec Django. Il y a un problème avec cela: dans l'interface administrative, la page ne figure pas toutes les entités (vidéos), mais certaines (16 sur 25). Je n'ai aucune idée, qu'est-ce que c'est.
puis je cours J'ai trouvé aucun gestionnaire ou quoi que ce soit (peut-être que je ne sais pas tout simplement pas Où chercher-les). p> au bas de l'administrateur Page: alors je ajoute à videodeladmin Classe Voici un code. P> python gean.py shell code>, et là video.Object.All () code>, il y a tous les 25 objets (les comptais à l'aide d'un len code> et en les itération avec pour code> boucle). p> 25 vidéos code>, tandis qu'il n'y a que 16 lignes. p> list_per_page = 10 code>, paginateur Afficher trois pages, mais seulement les deux premières d'entre elles ont des vidéos, la troisième montre aucune ligne de lignes. P> # admin.py
class VideoModelAdmin(admin.ModelAdmin):
list_display = ['title', 'short_desc', 'author', 'redactor_choise', 'views_num', 'rating', 'is_published']
list_filter = ['is_published', 'redactor_choise']
list_per_page = 10
actions = ['make_published', 'update_comments_count']
exclude = ('file_lq', 'file_hq', )#'thumb',)
def make_published(self, request, queryset):
queryset.update(is_published=1)
make_published.short_description = "ÐпÑбликоваÑÑ Ð²ÑделеннÑе"
def save_model(self, request, obj, form, change):
instance = form.save(commit=False)
instance.author = request.user
instance.save()
return instance
def update_comments_count(self, request, queryset):
for video in queryset:
video.update_comments_count()
update_comments_count.short_description = "ÐеÑеÑÑиÑаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии!"
# later there
admin.site.register(Video, VideoModelAdmin)
# models.py
class Video(models.Model):
def make_upload_path(instance, filename):
return 'video/thumbs/' + generate_random_name(filename)
category = models.ManyToManyField(Category, limit_choices_to = {'is_published': 1})
title = models.CharField(max_length=128)
short_desc = models.CharField(max_length=255)
long_desc = tinymce_models.HTMLField(blank=True)
file_lq = models.FileField(upload_to='video/lq/', null=True, blank=True)
file_hq = models.FileField(upload_to='video/hq/', null=True, blank=True)
thumb = models.FileField(upload_to=make_upload_path, blank=True, null=True)
#thumb = fields.ThumbnailField(upload_to=make_upload_path, sizes=settings.VIDEO_THUMB_SIZE, blank=True, null=True)
author = models.ForeignKey(User, editable=False)
redactor_choise = models.BooleanField(default=False)
views_num = models.SmallIntegerField(default=0, editable=False)
comments_num = models.SmallIntegerField(default=0, editable=False)
rating = models.SmallIntegerField(default=0, editable=False)
voters = fields.PickledObjectField(blank=True, editable=False)
created = models.DateTimeField(auto_now_add=True)
is_published = models.BooleanField(default=False)
def get_absolute_url(self):
return "/video/%d" % self.id
def views_num_plus(self):
cursor = connection.cursor()
cursor.execute('update soctv_video set views_num=views_num+1 where id=%d', [self.id])
cursor.close()
def update_comments_count(self):
from threadedcomments.models import ThreadedComment as Comment
self.comments_num = Comment.objects.filter(video=self).count()
self.save()
#cursor = connection.cursor()
#cursor.execute('update soctv_video set comments_num = (select count(*) from soctv_comment where video_id = %s) where id = %s', [self.id, self.id])
#cursor.close()
def update_categories_counts(self):
cursor = connection.cursor()
cursor.execute('update soctv_category set num_items = (select count(*) from soctv_video_category where category_id = soctv_category.id)')
cursor.close()
def is_user_voted(self, uid):
try:
if self.voters[uid]:
return self.voters[uid]
except Exception:
return False
def increment_view_count(self, token):
import md5
token = md5.new(token).hexdigest()
if VideoView.objects.filter(uniquetoken=token).count() == 0:
VideoView(uniquetoken = token, video = self).save()
def view_count(self):
return self.views_num + VideoView.objects.filter(video=self).count()
def __unicode__(self):
return unicode(self.title)
3 Réponses :
Le problème peut être que certains FK dans certaines de vos vidéos indiquent quelque chose qui n'existe pas. P>
J'ai eu le même problème et c'était la raison. P>
Oh. Merci. Je vois. Puis-je faire quelque chose sauf de changer de FK dans la console par les mains?
merci, j'ai pour i dans video.Object.all (): ... i.author = adm ... i.save () m'a sauvé :)
Assurez-vous que vous êtes connecté au Compte correct ASWELL. Dans mon cas, mon compte n'avait pas d'autorisation de modifier << Strong> Modèle Strong >> P>
Django échouera silencieusement si la valeur n'est pas là dans la colonne de la clé étrangère. Ajouter un attribut null et vide à la colonne
null=True, blank=True