teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

sdf

2020/11/17 08:29

投稿

_ecs
_ecs

スコア9

title CHANGED
File without changes
body CHANGED
@@ -15,18 +15,36 @@
15
15
  }
16
16
  ```
17
17
  ```python
18
- #モデル
18
+ #シリアライザ
19
- class Command(models.Model):
19
+ class CommandSerializer(serializers.ModelSerializer):
20
+
20
- sender = models.IntegerField()
21
+ upfile = UpFileSerializer(read_only=True)
21
- cmd = models.TextField()
22
- recipient = models.TextField()
23
- response = models.TextField()
24
- upfile = models.OneToOneField(UpFile, default=None, null=True, blank=True, unique=True, related_name='command', on_delete=models.CASCADE)
25
- downfile = models.OneToOneField(DownFile, default=None, null=True, blank=True, unique=True, related_name='command', on_delete=models.CASCADE)
26
- cmd_finished = models.DateTimeField(null=True, blank=True)
22
+ downfile = DownFileSerializer(read_only=True)
23
+
24
+ class Meta:
25
+ model = Command
26
+ fields = '__all__'
27
+ extra_kwargs = {
28
+ 'response': {'required': False}
29
+ }
30
+
31
+
32
+ def create(self, validated_data):
33
+ c = Command(
34
+ sender=validated_data['sender'],
35
+ cmd=validated_data['cmd'],
36
+ recipient=validated_data['recipient']
37
+ )
38
+ c.finished('cmd')
39
+ return c
40
+
41
+ def update(self, instance, validated_data):
27
- resp_finished = models.DateTimeField(null=True, blank=True)
42
+ instance.response = validated_data.get('response', instance.response)
43
+ instance.finished('resp')
44
+ return instance
28
45
  ```
29
46
  ```python
47
+ #モデル
30
48
  class Command(models.Model):
31
49
  sender = models.IntegerField()
32
50
  cmd = models.TextField()