Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何制作一个具有多对多关系的模型,如摇滚、乡村、蓝调和流行音乐_Python_Django_Django Models - Fatal编程技术网

Python 如何制作一个具有多对多关系的模型,如摇滚、乡村、蓝调和流行音乐

Python 如何制作一个具有多对多关系的模型,如摇滚、乡村、蓝调和流行音乐,python,django,django-models,Python,Django,Django Models,编辑: 我想有另一个模式来分类我的所有专辑,其中将采取多个类别。类别将是预先指定的选项,这将使查询更健壮、更易于处理 我认为您要做的是将Category定义为一个与Album具有多对多关系的模型。通过这种方式,您可以执行以下操作:Album.objects.filter(category\uu name='country'),或者您可以使用category的一个实例执行category.Album\u set.all() 请在您的相册型号上尝试以下操作: from django.db impor

编辑:

我想有另一个模式来分类我的所有专辑,其中将采取多个类别。类别将是预先指定的选项,这将使查询更健壮、更易于处理

我认为您要做的是将Category定义为一个与Album具有多对多关系的模型。通过这种方式,您可以执行以下操作:
Album.objects.filter(category\uu name='country')
,或者您可以使用category的一个实例执行
category.Album\u set.all()

请在您的相册型号上尝试以下操作:

from django.db import models
from django.core.urlresolvers import reverse
from django.conf import settings
from django.contrib.auth.models import User


class Album(models.Model):
    creator = models.CharField(max_length=250)
    album_name = models.CharField(max_length=250)
    category = models.CharField(max_length=250)
    album_photo = models.FileField()
    author = models.ForeignKey (User,on_delete=models.CASCADE, related_name='album', default='1')

    def get_absolute_url(self):
        return reverse('post:detail',kwargs={'pk': self.pk})

    def __str__(self):
        return self.creator + ' - ' + self.album_name

class Song(models.Model):
    Album = models.ForeignKey(Album, on_delete=models.CASCADE)
    song_name = models.CharField(max_length=250)

    def __str__(self):
        return  self.song_name
class Category(models.Model):
    name = models.CharField(max_length=50)
    desc = models.TextField()
然后添加到您的相册型号:

from django.db import models
from django.core.urlresolvers import reverse
from django.conf import settings
from django.contrib.auth.models import User


class Album(models.Model):
    creator = models.CharField(max_length=250)
    album_name = models.CharField(max_length=250)
    category = models.CharField(max_length=250)
    album_photo = models.FileField()
    author = models.ForeignKey (User,on_delete=models.CASCADE, related_name='album', default='1')

    def get_absolute_url(self):
        return reverse('post:detail',kwargs={'pk': self.pk})

    def __str__(self):
        return self.creator + ' - ' + self.album_name

class Song(models.Model):
    Album = models.ForeignKey(Album, on_delete=models.CASCADE)
    song_name = models.CharField(max_length=250)

    def __str__(self):
        return  self.song_name
class Category(models.Model):
    name = models.CharField(max_length=50)
    desc = models.TextField()

伟大的这种关系起了作用。我将如何使其成为预先制作的类别之一?