【发布时间】:2019-04-30 13:58:05
【问题描述】:
我已经开始学习如何将 Django REST 框架与 React 一起使用,我有一个简短的问题。我制作了一个表格并分别使用CreateAPIView 和UpdateAPIView 来创建/更新项目。但是,如果列表来自我的一个模型中的变量,我如何获取内容以填充我的 <select> 字段?
from model_utils import Choices
class Author(models.Model):
GENDER = Choices('male', 'female', "I don't know really") # How do I get this?
gender = models.CharField(max_length=10, choices=GENDER)
Author.GENDER 的 serializer 和 views 会是什么样子,因为它不是模型?
目前,这就是我现在所拥有的。
Django(我认为这里没有什么特别之处。)。
# Serializer.
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ('id', 'gender')
# View
class AuthorUpdateView(UpdateAPIView):
queryset = Author.objects.filter(deleted_at__isnull=True)
serializer_class = AuthorSerializer
反应。
componentDidMount() {
const pk = this.props.match.params.pk
axios.get(`http://localhost:8000/api/authors/${pk}`)
.then(response => {
const pk = response.data.id
const gender = response.data.gender
this.setState({gender})
})
.catch(err => console.log(err))
}
我对您在使用 DRF 时可能有的任何方向或概念持开放态度,因此我也可以向您学习如何使用它。
【问题讨论】:
-
我建议把它变成像这里docs.djangoproject.com/en/2.2/ref/models/fields/#choices 这样的元组列表,这样可以避免在数据库中存储长的人类可读字符串,以后可以更改。接下来,您实际上不必提供此选项列表作为响应的一部分。这是“协议”的一部分:您有许多支持的值(性别代码),客户端应用程序应该使用这些值。因此,您可以将此列表保留在客户端应用程序中。使用您喜欢的任何人类可读的字符串。
-
我建议创建一个新的 API 视图来返回选项
-
@JPG 有趣。序列化器/视图会是什么样子?
-
@enchance 在下面查看我的答案
标签: python django reactjs django-rest-framework