【发布时间】:2021-11-20 15:31:57
【问题描述】:
我从下面的视图中得到这个错误:
from django.shortcuts import render, redirect
from movies import models as movies_models
from django.contrib.auth import get_user_model
User = get_user_model()
def playlists_view(request):
if (not request.user.is_authenticated) or (not request.user.is_staff):
return redirect('Login')
playlists = movies_models.PlayList.objects.filter(created_by=request.user).order_by('-id')
return render(request, 'cpanel/playlists.html', {'playlists': playlists})
我的播放列表模型是这样的:
from django.db import models
class PlayList(models.Model):
type = models.PositiveSmallIntegerField(choices=type_choice, default=1, verbose_name='نوع فیلم')
category = models.ManyToManyField(Category, related_name='Playlists', verbose_name='دسته بندی و ژانر')
name_en = models.CharField(max_length=55, unique=True, verbose_name='نام انگلیسی')
name_fa = models.CharField(max_length=55, unique=True, verbose_name='نام فارسی')
summary = models.TextField(max_length=1024, verbose_name='خلاصه فیلم')
imdb_score = models.FloatField(default=0, verbose_name='IMDB امتیاز')
users_score = models.FloatField(default=0, verbose_name='امتیاز کاربران')
# seen_number = models.FloatField(default=0, verbose_name='تعداد نفراتی که فیلم را مشاهده کرده اند')
publish_status = models.CharField(max_length=55, null=True, blank=True)
is_free = models.BooleanField(default=False, verbose_name='رایگان است')
visit_times = models.IntegerField(default=0)
play_times = models.IntegerField(default=0)
year = models.CharField(max_length=4, verbose_name='سال')
time = models.CharField(max_length=55, verbose_name='مدت زمان فیلم')
tv_pg = models.PositiveSmallIntegerField(choices=tv_pg_choice, default=5, verbose_name='درجه بندی سنی')
actor = models.ManyToManyField(Actor, blank=True, verbose_name='بازیگران')
director = models.ManyToManyField(Director, blank=True, verbose_name='کارگردان')
thumb_image = models.ImageField(null=True, blank=True, editable=True, upload_to=image_path,
verbose_name='تصویر انگشتی فیلم')
image_1920x1080 = models.ImageField(null=True, blank=True, editable=True, upload_to=image_path,
verbose_name='تصویر بنر دسکتاپ فیلم')
image_600x810 = models.ImageField(null=True, blank=True, editable=True, upload_to=image_path,
verbose_name='تصویر بنر موبایل فیلم')
country = models.ManyToManyField(Country, verbose_name='کشور')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(null=True, blank=True)
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
users_score_n = models.IntegerField(default=0)
users_score_p = models.IntegerField(default=0)
trailer_url = models.CharField(max_length=512, null=True, blank=True, verbose_name='آدرس تریلر')
page_url = models.CharField(max_length=255, null=True, blank=True, help_text='This field is Read Only')
def __str__(self):
return self.name_en + ' | Type: ' + str(self.type) + ' | ID: ' + str(self.id)
def get_absolute_url(self):
return reverse("playlist", kwargs={"pk": self.id, "name_en": self.name_en, "name_fa": self.name_fa})
def save(self, *args, **kwargs):
old_image_name = self.thumb_image.name
super().save(*args, **kwargs)
if self.type == 1:
self.page_url = 'movie/' + str(self.id) + '/' + name_to_url(self.name_en) + '/' \
+ name_to_url(self.name_fa) + '/'
else:
self.page_url = 'series/' + str(self.id) + '/' + name_to_url(self.name_en) + '/' \
+ name_to_url(self.name_fa) + '/'
super().save(*args, **kwargs)
if old_image_name != self.thumb_image.name:
image_resize(self.thumb_image.name)
但是这个模型的重要部分是这个字段:
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
我这样定义用户:
from django.contrib.auth import get_user_model
User = get_user_model()
当我在本地主机中运行 django 应用程序时没问题,但在生产服务器中我收到此错误:(
我尝试不使用request.user,而是使用User.objects.get(username=request.user),但我在下面的行中遇到了同样的错误:
playlists = movies_models.PlayList.objects.filter(created_by=request.user).order_by('-id')
My User 是一个简单的用户模型,继承自 AbstractUser 模型。
感谢您的关注。 :)
【问题讨论】:
-
您好!你能告诉我们完整的错误信息吗?另外,由于您说它在 dev 本地工作但在 prod 中不起作用,这可能是设置的差异。你碰巧在 dev 和 prod 中有不同的配置文件吗?如果可以,你可以给他们看吗?
标签: python python-3.x django django-models django-views