我正在尝试更新我的模型的一个字段,我正在尝试为此使用补丁,但我对django rest是新的,我想我有点不对劲
我尝试使用部分更新方法,但不起作用。我想更新已取消的状态(已取消在我的枚举.py)你知道吗
这是我模型的一部分
class Aula(AcademicoBaseModel, permissions.AulaPermission):
turma_disciplina = models.ForeignKey(TurmaDisciplina, models.PROTECT, related_name='lessons')
data_inicio = models.DateTimeField(db_index=True)
data_termino = models.DateTimeField()
duracao = models.IntegerField(default=50)
status = models.ForeignKey('Status', models.PROTECT, default=1)
这是我的观点
class CancelLessonView(generics.UpdateAPIView):
serializer_class = serializers.AulaSerializer
def patch(self, request, *args, **kwargs):
lesson = self.kwargs.get('id')
instance = models.Aula.objects.get(id=lesson)
instance.status_id = enums.StatusEnum.CANCELLED
serializer = serializers.AulaSerializer(data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
instance.save()
return Response(serializer.data)
这是我的模特身份
class Status(models.Model):
name = models.CharField(max_length=50, db_column='nome')
color = models.CharField(max_length=7, db_column='cor')
ignore_in_attendance_report = models.BooleanField(default=False)
allow_attendances = models.BooleanField(default=True)
allow_activities = models.BooleanField(default=True)
我的枚举.py你知道吗
class StatusEnum:
NOT_SENT = 1
PENDING = 2
SENT = 3
CONTENT_PENDING = 4
CANCELLED = 5
首先,我建议总是使用英文名字-这将更容易理解你的代码为其他程序员。你知道吗
关于状态,如果您想要真正简单的解决方案,我建议将状态更改为简单的布尔字段,您可以使用实例状态=假或真。你知道吗
你为什么用外键来表示身份?状态模型看起来怎么样?你知道吗
编辑
我的做法是服务.py文件到每个django应用程序,我在其中创建服务,在您的示例中,让我们说AulaService。在此类中,可以定义方法:
您可以在任何地方使用服务(但首先要记住导入服务), 在您的示例中,您可以调用视图中的服务:
干杯, 芬利尔
相关问题 更多 >
编程相关推荐