Py学习  »  Django

Django模型上的动态场

Anthony • 6 年前 • 1411 次点击  

class Restaurant(models.Model):
    name = models.CharField(max_length=100, blank=False)
    opening_time = models.TimeField(blank=False)
    closing_time = models.TimeField(blank=False)

    def __str__(self):
        return self.name

    @property
    def is_open(self):
        return (
            True
            if self.opening_time <= datetime.now().time() < self.closing_time
            else False
        )

还有,我的serializer.py:

class RestaurantSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Restaurant
        fields = ('pk', 'name', 'opening_time', 'closing_time')

我正考虑用芹菜来检查它是否开着,但听起来像是一种杀伤力太强的解决办法。当然,我希望这个更改影响序列化程序,所以我认为应该在模型上做些什么。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/35474
 
1411 次点击  
文章 [ 1 ]  |  最新文章 6 年前
AKX
Reply   •   1 楼
AKX    6 年前

您可以添加 is_open

class RestaurantSerializer(serializers.HyperlinkedModelSerializer):
    is_open = serializers.SerializerMethodField()

    class Meta:
        model = Restaurant
        fields = ('pk', 'name', 'opening_time', 'closing_time', 'is_open')

    def get_is_open(self, instance):
        return instance.is_open