【发布时间】:2022-01-26 03:10:32
【问题描述】:
我是 Django 新手。在我的项目中,我想过滤所有可用状态的房间,然后我希望将 start_date 更新为当前日期时间。但我收到以下错误:
'QuerySet' object has no attribute 'start_date'
我在 models.py 中有以下类:
class RoomStatus(models.Model):
room = models.ForeignKey(Room, on_delete=models.DO_NOTHING)
class RoomStatusChoices(models.IntegerChoices):
AVAILABLE = 1
UNAVAILABLE = 2
room_status =
models.SmallIntegerField(choices=RoomStatusChoices.choices,
default=RoomStatusChoices.AVAILABLE)
start_date = models.DateTimeField(auto_now=True)
在 serializers.py 我用这段代码写了一个更新
available_rooms = RoomStatus.objects.filter(room=room,
room_status=RoomStatusChoices.AVAILABLE)
print(available_rooms)
available_rooms.start_date = max(available_rooms.start_date, datetime.now())
print(available_rooms) 的结果是
有人可以帮助我吗?谢谢提前。
【问题讨论】:
-
available_rooms 是一个查询集,它是一个可迭代的房间对象(在您的情况下它是空的)。该列表没有
.start_date属性,因为它不是房间对象。列表的每个元素都可能具有属性,但列表(或更准确地说 - 查询集)没有。 -
@NotSoShabby- 我应该将 strat_date 添加到 qureyset 吗?
-
您必须从查询集的元素中获取 start_date,例如 available_rooms[0].start_date
-
@Luiz- 它不工作仍然得到同样的错误。
标签: python django django-models django-rest-framework django-views