【发布时间】:2016-07-05 13:36:23
【问题描述】:
我有一个序列化器类
class StudentJournalSerializer(serializers.ModelSerializer):
class Meta:
model = StudentJournalModel
fields = (
'value',
'date',
'discipline',
'para_number',
'student',
'is_module'
)
我无法按照我的需要去工作。 我希望它显示的不是 ForeignKey 字段的 pk 值,而是实际字段值加上这个类也应该适用于 post 方法。
我通常会添加:
student = serializers.CharField(
source='student.username'
)
discipline = serializers.CharField(
source='discipline.discipline'
)
para_number = serializers.CharField(
source='para_number.para_position'
)
但它只适用于 GET read_only=True
但是我需要在来自客户端应用程序的发布请求期间使用它来在数据库中创建新对象,所以它显然不会工作。我读到我需要编写 .create() 方法来处理这种情况,但我真的不明白它是如何工作的以及我需要在那里覆盖什么,所以如果有人能解释它应该如何以及为什么我将不胜感激。
也为模型附加代码:
class StudentJournalModel(models.Model):
value = models.CharField(
max_length=55,
blank=True,
null=True,
verbose_name="Value",
default=''
)
date = models.DateField(
verbose_name="Date"
)
discipline = models.ForeignKey(
'department.Disciplines',
verbose_name="Discipline"
)
para_number = models.ForeignKey(
'department.ParaTime',
verbose_name="Class #"
)
student = models.ForeignKey(
User,
verbose_name="Student"
)
is_module = models.BooleanField(
verbose_name="Module value"
)
def __unicode__(self):
return u"%s, %s, %s" % (self.date, self.discipline, self.student.get_full_name())
【问题讨论】:
标签: django serialization django-rest-framework