假设我的应用中有两个模型:Car 和 CarAvailability。
class Car(Model):
availability = ForeignKey(CarAvailability)
class CarAvailability(Model):
WEEKDAYS = (
('monday', 'Monday'),
('tuesday', 'Tuesday'),
('wednesday', 'Wednesday')
# ... basically all the days of the week
)
day = CharField(max_length=20, choices=WEEKDAYS)
我可以选择哪些选项来将外键数量(可用性
属性)限制为最多 7 个,并确保每个工作日只有一个。我不知道我在这里说得是否足够清楚,如果有的话请告诉我。
我认为您可以通过使用两个模型 Car
和 DayOfWeek
来改进建模,并将其建模为 ManyToManyField
:
class <b>DayOfWeek</b>(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
class Car(models.Model):
days = models.<b>ManyToManyField(DayOfWeek)</b>
另一种建模可能是使用整数,并将其编码为“位串”:
from enum import IntFlag
class Day(IntFlag):
MONDAY = 1
TUEDAY = 2
WEDNESDAY = 4
THURSDAY = 8
FRIDAY = 16
SATURDAY = 32
SUNDAY = 64
class Car(models.Model):
days = models.<b>IntegerField()</b>
然后您可以将其编码为:
Car.object.create(days=Day.MONDAY|Day.FRIDAY)
编码周一和周五有车。
我是一名优秀的程序员,十分优秀!