使用空集轨道Django-Model

时间:2017-02-24 10:32:44

标签: django django-models

我有两种模式:

class Album(models.Model):
    album_name = models.CharField(max_length=100)
    artist = models.CharField(max_length=100)

class Track(models.Model):
    album = models.ForeignKey(
        Album, related_name='tracks', 
        on_delete=models.CASCADE, 
        null=True
    )
    order = models.IntegerField()
    title = models.CharField(max_length=100)
    duration = models.IntegerField()

现在我如何获得带有空集合的Album集合?

2 个答案:

答案 0 :(得分:1)

请阅读文档here。您无法保存模型,其中包含您需要{strong>或的字段,您需要null=True才能在数据库中保留空字段

models.py

class Album(models.Model):
    album_name = models.CharField(max_length=100, null=True)
    artist = models.CharField(max_length=100, null=True)

class Track(models.Model):
    album = models.ForeignKey(Album, related_name='tracks', on_delete=models.CASCADE, null=True)
    order = models.IntegerField(null=True)
    title = models.CharField(max_length=100, null=True)
    duration = models.IntegerField(null=True)

信息:如果您的数据库是Postgre,建议您在null=True初始化字段。

编辑:非常感谢那些有负面但却从未给出答案的人。

获取包含空曲目的专辑列表。您需要先保存与专辑相关的空白曲目(这就是您需要添加null=True的原因)并执行以下查询:

Album.tracks.all()

此查询采用您选择的相册,并选择所有拥有此相册的相关名称的曲目。因此,结果是查询具有相册具有密钥的曲目列表。

答案 1 :(得分:1)

尝试使用isnull

i