【发布时间】:2022-08-04 07:36:02
【问题描述】:
我在 graphql 中创建包含关系的突变时遇到问题。我不知道从哪里开始。
例如 - 三类模型:
class HotelGuests(models.Model):
id = models.UUIDField(primary_key=True,
default=uuid.uuid4,
editable=False)
name = models.CharField(max_length=46, default=\'noname\')
lastname = models.CharField(max_length=46, default=\'noname\')
email = models.EmailField(max_length=254)
tel_number = models.CharField(max_length=12, blank=True, null=True)
class Rooms(models.Model):
room_number = models.PositiveSmallIntegerField()
min_vacancy = models.PositiveSmallIntegerField(default=1)
max_vacancy = models.PositiveSmallIntegerField(default=7)
class Reservations(models.Model):
BOOKING_STATUS = {
(0, \'Do zatwierdzenia\'),
(1, \'Zatwierdzona\'),
(2, \'Zrealizowana\'),
(3, \'Anulowana\'),
}
price = models.FloatField(default=0)
prepayment_price = models.FloatField(default=0, blank=True, null=True)
number_of_guests = models.PositiveSmallIntegerField()
date_from = models.DateField(default=now)
date_to = models.DateField(default=now)
description = models.TextField(blank=True, null=True)
booking_status = models.PositiveSmallIntegerField(default=0, choices=BOOKING_STATUS)
hotel_guest = models.ForeignKey(HotelGuests, on_delete=models.CASCADE)
room = models.ForeignKey(Rooms, on_delete=models.SET_NULL, blank=True, null=True)
三类graphql类型:
class HotelGuestType(DjangoObjectType):
class Meta:
model = HotelGuests
fields = (\'id\', \'name\', \'lastname\', \'email\', \'tel_number\')
class RoomType(DjangoObjectType):
class Meta:
model = Rooms
fields = (\'id\', \'room_number\', \'min_vacancy\', \'max_vacancy\')
class ReservationType(DjangoObjectType):
class Meta:
model = Reservations
fields = (\'id\',
\'price\',
\'prepayment_price\',
\'number_of_guests\',
\'date_from\',
\'date_to\',
\'description\',
\'booking_status\',
\'hotel_guest\',
\'room\',)
和三类节点:
class HotelGuestNode(DjangoObjectType):
class Meta:
model = HotelGuests
filter_fields = [\'id\',
\'name\',
\'lastname\',
\'email\',
\'tel_number\']
interfaces = (relay.Node, )
class RoomNode(DjangoObjectType):
class Meta:
model = Rooms
filter_fields = [\'id\',
\'room_number\',
\'min_vacancy\',
\'max_vacancy\']
interfaces = (relay.Node, )
class ReservationNode(DjangoObjectType):
in_room = relay.ConnectionField(RoomNode, description=\'InRoom\')
booked_by = relay.ConnectionField(HotelGuestNode, description=\'BookedBy\')
@resolve_only_args
def resolve_in_room(self):
return self.in_room.all()
class Meta:
model = Reservations
filter_fields = [\'id\',
\'price\',
\'prepayment_price\',
\'number_of_guests\',
\'date_from\',
\'date_to\',
\'description\',
\'booking_status\']
interfaces = (relay.Node,)
我怎么能从中做出一个突变,在其中我将创建一个连接到酒店客人和房间的预订对象?
标签: python django django-models graphql graphene-django