我需要提供使用django rest框架通过api处理简单对象列表的功能。
考虑在Django中将postgres用作db,我为此目的使用了ArrayField:
class QA(models.Model):
name = models.CharField(max_length=1024, blank=True, default='')
date_created = models.DateTimeField(default=datetime.utcnow)
questions = postgres_fields.ArrayField(models.CharField(max_length=1024), null=True, blank=True)
answers = postgres_fields.ArrayField(models.TextField(), null=True, blank=True)
class QASerializer(serializers.ModelSerializer):
class Meta:
model = QA
exclude = ()
对于此代码,我可以使用以下json插入新的QA
对象:
{
"name": "Example",
"questions": ["123", "456", "789"],
"answers": ["answer1", "answer2"]
}
解决我的问题就足够了,但是我必须使用ForeignKeyField
通过另一个模型来指定依赖对象:
class QA(models.Model):
name = models.CharField(max_length=1024, blank=True, default='')
date_created = models.DateTimeField(default=datetime.utcnow)
class Question(models.Model):
text = models.CharField(max_length=1024)
qa = models.ForeignKey(QA, on_delete=models.CASCADE)
class Answer(models.Model):
text = models.CharField(max_length=1024)
qa = models.ForeignKey(QA, on_delete=models.CASCADE)
在第一种情况下,简单的ModelSerializer
是一个很好的解决方案,但是我一直坚持使用ForeignKey
将许多对象绑定到一个对象的情况。
django-rest-framework
是否提供了一个接口,用于通过简单的json来检索,创建和修补对象,就像我在问题中所写的那样?我应该在视图和序列化器中使用什么基类?为了与简单的json交互而不为每个模型创建另一个api的能力,我应该重载什么方法?