我正在學習蟒蛇和django,我正在編寫一個類似于IMDB的項目。我正在使用python 3.8.2 64位和django 3我想顯示電影收到的最新評論,無論編寫它的用戶是誰?,F在,它顯示用戶自己的最新評論,并且在注銷用戶后,評論將保留,而不會顯示編寫它的用戶。我試圖清除緩存和歷史記錄,沒有幫助。這是模型:from django.db import modelsfrom django.contrib.auth.models import Userclass Movie(models.Model): movie_title = models.CharField(max_length=250) movie_poster = models.ImageField(default='default.png', blank=True) movie_short_description = models.TextField() director = models.CharField(max_length=250) actor1 = models.CharField(max_length=250) actor2 = models.CharField(max_length=250) actor3 = models.CharField(max_length=250) actor4 = models.CharField(max_length=250) year = models.IntegerField() def __str__(self): return self.movie_title + ' - ' + str(self.year)class Review(models.Model): movie = models.ForeignKey(Movie, on_delete=models.CASCADE) user = models.ForeignKey(User, default = None, on_delete=models.DO_NOTHING) score = models.IntegerField() review_title = models.CharField(max_length=250, default="") movie_review = models.TextField() date = models.DateTimeField(auto_now_add=True) class Meta: get_latest_by = 'date' def __str__(self): return self.review_titleviews.pydef movie_detail(request, pk): try: movie = Movie.objects.get(pk=pk) review = Review.objects.all().latest() except Exception as e: print(e) return render (request, 'movies/movie_detail.html', {'movie': movie, 'review': review})代碼: </table> </p> <p>User Reviews</p> <h3>Score: {{review.score}} {{review.review_title}}</h3> <h6>{{review.date}}, by {{ user.get_username }}</h6> <p>{{review.movie_review}}</p> <a href="{% url 'add_review' pk=movie.pk %}">Review this title</a> </div> </div>{% endblock %}
1 回答
三國紛爭
TA貢獻1804條經驗 獲得超7個贊
我會創建一個屬性,為您提供所有評論,然后從此查詢集中獲取最新信息。代碼如下:MovieReview
# models.py
class Movie(models.Model):
# your other code
@property
def reviews(self) -> QuerySet:
return self.review_set.all()
# views.py
def movie_detail(request, pk):
movie = get_object_or_404(Movie, pk=pk)
latest_review = movie.reviews.latest()
# return
Ps:我會重命名 ,并且只是 和 。很明顯,這是電影的標題。我還強烈建議將 4 s 更改為具有 -relation 的單個模型(但我認為您稍后會在文檔中閱讀)。movie_titlemovie_postermovie_short_descriptiontitlepostershort_descriptiontitleMovieactorManyToMany
- 1 回答
- 0 關注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消
