【发布时间】:2016-11-05 03:55:50
【问题描述】:
型号:
class Timings(models.Model):
Timings_to = models.TimeField(blank=True)
Timings_from = models.TimeField(blank=True)
def __str__(self):
return str(self.Timings_to) + '' + str(self.Timings_from)
class Temple(models.Model):
history = models.TextField(blank=False)
timings = models.ManyToManyField(Timings, blank=False, related_name='temple_timing')
establishment = models.CharField(max_length=20, choices=ESTABLISHMENT_CHOICE,
blank=True, default=None
)
我的问题如何为这些类编写序列化程序。我在 django 和休息中很新。
序列化器:
class TimingsCreateUpdateSerializer(serializers.ModelSerializer):
""" Timing Serializer for create """
Timings_to = serializers.TimeField(format="%I:%M%p")
Timings_from = serializers.TimeField(format="%I:%M%p")
class Meta:
model = Timings
fields = ('id', 'Timings_to', 'Timings_from',)
read_only = ('id',)
class TempleSerializer(serializers.ModelSerializer):
timings = TimingsCreateUpdateSerializer(many=True)
class Meta:
model = Temple
fields = '__all__'
我尝试根据 restfull api 的文档覆盖创建方法。但它不起作用,请告诉我为这个模型编写序列化程序类的正确方法。
def create(self, validated_data):
timings_data = validated_data.pop('timings')
temple = Temple.objects.create(**validated_data)
for time_data in timings_data:
Timings.objects.create(temple=temple, **time_data)
return temple
创建了寺庙对象,但在“Timings.objects.create(temple=temple, **time_data)”中显示此错误
>>> serializer = TempleSerializer(data=data)
>>> serializer.is_valid()
True
>>> serializer.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\aryan\prabhat\anakonda\envs\sarvam\lib\site-packages\rest_framework\serializers.py", line 192, in save
self.instance = self.create(validated_data)
File "C:\Users\aryan\prabhat\sarvam_src\institute\serializers.py", line 103, in create
Timings.objects.create(temple=temple, **time_data)
File "C:\Users\aryan\prabhat\anakonda\envs\sarvam\lib\site-packages\django\db\models\manager.py", line 122, in manager
_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\aryan\prabhat\anakonda\envs\sarvam\lib\site-packages\django\db\models\query.py", line 399, in create
obj = self.model(**kwargs)
File "C:\Users\aryan\prabhat\anakonda\envs\sarvam\lib\site-packages\django\db\models\base.py", line 451, in __init__
raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
TypeError: 'temple' is an invalid keyword argument for this function
【问题讨论】:
标签: django python-3.x django-rest-framework django-serializer