首页 > 解决方案 > 这 3 个模型的关系是什么:用户、生日、标签?

问题描述

我正在创建一个生日日历应用程序。它将具有以下模型: - Django 的用户模型 - 生日 - 标签(即朋友、家人)

我不确定如何为 Label 类建模。用户应该能够创建一个新的 Label 对象,然后可以在创建生日对象时使用该对象。用户还应该能够根据标签过滤生日。

您将如何在数据库中建模这些关系?

from django.conf import settings
from django.db import models
from django.utils import timezone

class Birthday(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=25)
    day = models.DateField()

class Label(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    tag = models.CharField(max_length=25)

标签: djangodjango-models

解决方案


class Label(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    tag = models.CharField(max_length=25)



class Birthday(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=25)
    day = models.DateField()
    label = models.ForeignKey(Label, on_delete=models.CASCADE)

使用标签作为生日的外键。这样你就会知道哪个生日与哪个标签有关。

然后,您可以根据这样的标签过滤掉生日。

Birthday.objects.filter(label__id=1)

推荐阅读