我正在创建一个生日日历应用程序。它将具有以下模型: -Django的用户模型 -生日 -标签(即朋友,家人)
我不确定如何为Label类建模。用户应该具有创建新的Label对象的能力,然后可以在创建Birthday对象时使用它。 用户还应该能够根据标签过滤生日。
您如何在数据库中为这些关系建模?
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)
答案 0 :(得分:1)
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)
答案 1 :(得分:0)
据我了解,您可以在生日模型中将Label
添加为ManyToMany字段。这样,您可以将此标签分配给Birthday
。一个生日可以有多个标签,一个标签可以有多个生日。所以会像这样:
class Birthday(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
name = models.CharField(max_length=25)
day = models.DateField()
labels = models.ManyToManyField(Label)
用法:
birthday = Birthday.objects.create(...)
label = Label.objects.create(...)
b.labels.add(label)
Birthday.objects.filter(labels=label)