簡體   English   中英

Django關系數據庫在視圖中

[英]Django relational database in view

我有一個django應用程序,我有很多很多字段,我試圖在我的列表中顯示這些關系記錄,但它都是空白

所以這是我的模特:

class Genre(models.Model):
    genre_name = models.CharField(max_length=50)
    genre_slug = models.SlugField(max_length=300)
    genre_meta = models.TextField(max_length=300)
    genre_description = models.TextField(max_length=300)
    listing = models.BooleanField(default=True)

    def __unicode__(self):
        return self.genre_name

class Movie(models.Model):
    movie_name = models.CharField(max_length=50)
    movie_slug = models.SlugField(max_length=300)
    movie_description = models.TextField(null=True, max_length=300)
    movie_category = models.ManyToManyField(Category, related_name='category')
    movie_genre = models.ManyToManyField(Genre, blank=True, related_name='genre')
    listing = models.BooleanField(default=True)

    def __unicode__(self):
        return self.movie_name

這是我的看法

def AllMovies (request):
    movies= Movie.objects.all().order_by('movie_name')
    context = {'movies': movies}
    return render_to_response('all.html', context, context_instance=
RequestContext(request))                 

這是我的模板

 {% for movie in movies %}
<a href="/movies/{{ movie.movie_slug }}/">{{ movie }}</a>
{% for genre in movies.genre.all %}{{ genre_name }}{% endfor %}

{% endfor %}

所以這里有三個問題:

1-我得到的所有內容都在我的模板中

2-顯示已列出的項目的最佳選項是什么,並將其余部分隱藏在模板中

3-這是一個數據庫,所以我確定我們需要在我的模板中使用加載更多按鈕,但如果我想顯示30個項目而不是全部

嘗試這個:

{% for movie in movies %}
    <a href="/movies/{{ movie.movie_slug }}/">{{ movie }}</a>
    {% for genre in movie.movie_genre.all %}{{ genre_name }}{% endfor %}
{% endfor %}

你試圖迭代movies.genre.all ,這是錯誤的,因為:

  • movies是一個查詢集,你應該使用movie ,因為它是一個模型實例
  • genre不是Movie模型中的一個字段,你應該使用movie_genre ,這是你正在尋找的ManyToManyField

我相信你不理解related_name屬性。 它不會修改字段的行為(在本例中為: movie_genre )。 相反,它會更改相關模型中屬性的名稱(在本例中為: Genre )。 例如,您可以使用它來獲取所有相關電影:

>>> genre = Genre.objects.get(name='Drama')
>>> genre.genre.all()
[<Movie>, <Movie>, ...]

如您所見,您對related_name的選擇並不是那么好。 movies這樣的東西會更合適。

請再次閱讀文檔,因為您可能不了解Django關於關系的邏輯(外鍵,多對多等)。

此外,這里有一些與風格相關的提示:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM